黑马程序员技术交流社区

标题: newFile的路径问题 [打印本页]

作者: air    时间: 2013-12-29 08:13
标题: newFile的路径问题
本帖最后由 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文件的路径诞生呢?


作者: hurryup    时间: 2013-12-29 10:23
这个目录诞生文件而不是我写代码编译的class文件的路径诞生呢?
什么意思,麻烦把问题阐述清楚些
作者: 刘汉文    时间: 2013-12-29 11:43
想要在class文件的路径诞生请使用相对路径,构造时不要把dir传入。这样默认就会在当前路径创建。
File dir = new File("d:\\java1223");
File file = new File(dir,"javalist.txt");
这样路径就绝对了。
作者: air    时间: 2013-12-29 12:39
hurryup 发表于 2013-12-29 10:23
这个目录诞生文件而不是我写代码编译的class文件的路径诞生呢?
什么意思,麻烦把问题阐述清楚些 ...

为什么这个FileWriter 写出的javaList.txt文件会在("d:\\java1223","javalist.txt")这个目录诞生文件而不是我写代码编译的class文件的路径诞生呢?

作者: air    时间: 2013-12-29 13:42
刘汉文 发表于 2013-12-29 11:43
想要在class文件的路径诞生请使用相对路径,构造时不要把dir传入。这样默认就会在当前路径创建。
File dir  ...

抱歉,我是想知道为什么?
关联的明明是file.toString()方法出来的javalist.txt而不是路径+javalist.txt,
作者: air    时间: 2014-1-3 12:35
阿墨 发表于 2014-1-1 16:42
应该可以打印下file.toString()看看你关联的到底是什么

file.toString 用System.out打印出来的就是"javalist.txt",不包含上面一行里的dir---->File dir = new File("d:\\java1223");




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2