黑马程序员技术交流社区
标题:
求助:下面是一个扫描当前目录下文件并输出到文本的一个程序,为啥只能完整的扫描e盘
[打印本页]
作者:
潜伏
时间:
2013-11-29 21:50
标题:
求助:下面是一个扫描当前目录下文件并输出到文本的一个程序,为啥只能完整的扫描e盘
/*
列出指定目录下的文件,文件夹,包括子目录下面的文件
*/
import java.io.*;
class Mulushuchu
{
public static void main(String[] args) throws Exception
{
File dir=new File("d:");
StringBuilder sb=new StringBuilder();
//System.out.println(sb.toString());
FileWriter w=new FileWriter("3.txt");
BufferedWriter fw=new BufferedWriter(w);
show(dir,fw);
fw.close();
}
public static void show(File dir,BufferedWriter fw)throws Exception
{
//System.out.println(dir);
File[] arr=dir.listFiles();
for(File f:arr)
{
if(!f.isHidden()&&f.isDirectory())
{
show(f,fw);//递归
}
else
{
fw.write(f.getPath());
fw.newLine();
fw.flush();
}
}
}
}
作者:
HAnG
时间:
2013-11-29 22:30
你代码写的是扫描d盘,我猜你问的应该是为什么d盘扫描到一半会报错吧?
因为你代码用了递归的方法,你d盘中的文件夹太多,递归次数很多,每次递归栈内存中就增加一个函数,然后就内存溢出了。
作者:
冯晓骏
时间:
2013-11-29 23:45
import java.io.*;
class Test
{
public static void main(String[] args) throws Exception
{
File dir=new File("d:");
//File dir=new File("d:\\");
FileWriter w=new FileWriter("Test\\3.txt");
BufferedWriter fw=new BufferedWriter(w);
show(dir,fw);
fw.close();
}
public static void show(File dir,BufferedWriter fw)
{
System.out.println(dir.getAbsolutePath());
System.out.println(dir.getPath());
System.out.println(dir.getParent());
File[] arr=dir.listFiles();
for(File f:arr)
{
System.out.println(f.getPath()+":"+f.getName());
// if(!f.isHidden()&&f.isDirectory())
// {
// System.out.println(111);
// show(f,fw);//递归
// }
// else
// {
// fw.write(f.getPath());
// fw.newLine();
// fw.flush();
// }
}
}
}
复制代码
用getAbsolutePath()方法调用
如果dir是写“d:”,绝对路径是你工程的目录
如果dir是写“d:\\”,绝对路径就是D盘
但我不知道这是为什么,开了个帖子大家一起讨论吧
http://bbs.itheima.com/thread-101212-1-1.html
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2