黑马程序员技术交流社区
标题:
IO程序问题
[打印本页]
作者:
宋文轩
时间:
2011-11-11 21:44
标题:
IO程序问题
需求是:取出D:盘下全部的.java文件的文件路径保存在java.txt文件中
下面是我自己写的,但是只写出了一个文件,苦思冥想没有找到原因,请大家有空帮忙瞅瞅。
public static void main(String[] args) {
File dir = new File("E:\\MyEclipse\\heimaStudy");
File file = new File("C:\\java.txt");
getJavaFile(dir, file);
}
public static void getJavaFile(File dir, File file1) {
BufferedWriter bfw = null;
try {
bfw = new BufferedWriter(new FileWriter(file1));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
File files[] = dir.listFiles();
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory())
getJavaFile(files[i], file1);
else {
String file = files[i].getName();
if (file.endsWith(".java")) {
try {
bfw.write(files[i].getAbsolutePath());
bfw.newLine();
bfw.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
try {
bfw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
复制代码
作者:
宋文轩
时间:
2011-11-12 14:18
我自己找到原因了 发上来防止大家犯同样的错误哈 bfw.write(files[i].getAbsolutePath(),true)就可以了,否则每次都会覆盖上面写过的东西,变成最后就只剩下了最后一个文件。哈哈,纠结了好久才发现。
作者:
张志东
时间:
2011-11-12 15:29
从中午吃过饭到现在一直在写你说的这个东西,还没写出来,有思路,但是在一个地方卡住了:那就是如何判断 files[i] 是个目录还是文件,你写的这个肯定不行,因为files[i]是一个文件或者文件夹的String,即使是文件夹用isDiretory()方法判断也是false,所以找到如何判断遍历到的是文件夹的方法以后就行了。但是我还没有找到,3个小时了,惭愧....
作者:
宋文轩
时间:
2011-11-12 16:53
本帖最后由 宋文轩 于 2011-11-12 16:59 编辑
files[i
]是File类型的,所以用isDirectory()方法是可以的 前面我用的是listFiles()方法 返回的是一个File类型的数组。 我这个代码加上我前面说的那个错误的地方就解决了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2