本帖最后由 何羡玉 于 2013-5-18 14:49 编辑
我下面的代码如果注释fw.close() 的话 就能取得正常结果,如果不注释fw.close()的话则会抛异常,为什么会跑异常呢,我都是在for循环外面关流的,只有跳出了循环才会关流啊。而且如果我关流的话,只会遍历一部分的.java文件出来,如果我不关,则全部会遍历,这是为什么?????
package enhanceTest;
import java.io.*;
public class Demo9 {
private FileWriter fw=null;
private File dir=null;
public Demo9(File dir) throws Exception
{
System.out.println("hahahha5");
fw=new FileWriter("e:\\list.txt");
this.dir=dir;
}
public void listj(File dir) throws Exception
{
File[] filess=dir.listFiles();
for(File files:filess)
{
if(files.isDirectory())
{
System.out.println("hahahah1");
listj(files);
}
else{
if(files.getName().endsWith(".java"))
{
fw.write(files.getAbsolutePath());
fw.write("\r\n");
fw.flush();
}
}
}
fw.close(); //如果注释掉,则正常运行,如果不注释就跑异常,为什么???
}
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
File dir=new File("E:\\myworkspace\\day25Test1");
Demo9 d=new Demo9(dir);
d.listj(dir);
}
}
|