A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© air 中级黑马   /  2013-12-29 08:13  /  2723 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 air 于 2013-12-29 19:00 编辑
  1. import java.io.*;
  2. import java.util.*;
  3. class  JavaFileList
  4. {
  5.         public static void main(String[] args) throws IOException
  6.         {
  7.                
  8.                 File dir = new File("d:\\java1223");

  9.                 List<File> list = new ArrayList<File>();

  10.                 fileToList(dir,list);

  11.                 //System.out.println(list.size());


  12.                 File file = new File(dir,"javalist.txt");
  13.                 writeToFile(list,file.toString());

  14.                


  15.         }
  16.         public static void fileToList(File dir,List<File> list)
  17.         {
  18.                 File[] files = dir.listFiles();

  19.                 for(File file : files)
  20.                 {
  21.                         if(file.isDirectory())
  22.                                 fileToList(file,list);
  23.                         else
  24.                         {
  25.                                 if(file.getName().endsWith(".java"))
  26.                                         list.add(file);
  27.                         }
  28.                 }
  29.         }

  30.         public static void writeToFile(List<File> list,String javaListFile)throws IOException
  31.         {
  32.                 BufferedWriter bufw =  null;
  33.                 try
  34.                 {
  35.                         bufw = new BufferedWriter(new FileWriter(javaListFile));
  36.                         
  37.                         for(File f : list)
  38.                         {
  39.                                 String path = f.getAbsolutePath();
  40.                                 bufw.write(path);
  41.                                 bufw.newLine();
  42.                                 bufw.flush();
  43.                         }

  44.                 }
  45.                 catch (IOException e)
  46.                 {
  47.                         throw e;
  48.                 }
  49.                 finally
  50.                 {
  51.                         try
  52.                         {
  53.                                 if(bufw!=null)
  54.                                         bufw.close();
  55.                         }
  56.                         catch (IOException e)
  57.                         {
  58.                                 throw e;
  59.                         }
  60.                 }
  61.         }
  62. }
复制代码
我的问题是:
WriteToFile(这里写的是文件名,是file.toString)
可是这个文件名已经是别的地方 File file = new File(dir,"javalist.txt");
file.toString 用System.out打印出来的就是"javalist.txt",不包含上面一行里的dir---->File dir = new File("d:\\java1223");
为什么这个FileWriter 写出的javaList.txt文件会在("d:\\java1223","javalist.txt")
这个目录诞生文件而不是我写代码编译的class文件的路径诞生呢?

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

6 个回复

倒序浏览
这个目录诞生文件而不是我写代码编译的class文件的路径诞生呢?
什么意思,麻烦把问题阐述清楚些
回复 使用道具 举报
想要在class文件的路径诞生请使用相对路径,构造时不要把dir传入。这样默认就会在当前路径创建。
File dir = new File("d:\\java1223");
File file = new File(dir,"javalist.txt");
这样路径就绝对了。
回复 使用道具 举报
air 中级黑马 2013-12-29 12:39:56
板凳
hurryup 发表于 2013-12-29 10:23
这个目录诞生文件而不是我写代码编译的class文件的路径诞生呢?
什么意思,麻烦把问题阐述清楚些 ...

为什么这个FileWriter 写出的javaList.txt文件会在("d:\\java1223","javalist.txt")这个目录诞生文件而不是我写代码编译的class文件的路径诞生呢?
回复 使用道具 举报
air 中级黑马 2013-12-29 13:42:00
报纸
刘汉文 发表于 2013-12-29 11:43
想要在class文件的路径诞生请使用相对路径,构造时不要把dir传入。这样默认就会在当前路径创建。
File dir  ...

抱歉,我是想知道为什么?
关联的明明是file.toString()方法出来的javalist.txt而不是路径+javalist.txt,
回复 使用道具 举报
应该可以打印下file.toString()看看你关联的到底是什么
回复 使用道具 举报
air 中级黑马 2014-1-3 12:35:42
7#
阿墨 发表于 2014-1-1 16:42
应该可以打印下file.toString()看看你关联的到底是什么

file.toString 用System.out打印出来的就是"javalist.txt",不包含上面一行里的dir---->File dir = new File("d:\\java1223");
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马