本帖最后由 陈军 于 2012-10-25 08:49 编辑
第一种:毕老师的那种,用递归
第二种:用Iterator迭代器。代码如下
public static void main(String[] args) {
File dir=new File("E:\\");
if (!dir.exists()) {
System.out.println("目录不存在");
return ;
}
LinkedList<File> fileList = new LinkedList<File>();
fileList.add(dir);
for(Iterator<File> it=fileList.iterator();it.hasNext();it=fileList.iterator()){
File f1=it.next();
File[]files=f1.listFiles();
if(files!=null){
for(File f:files){
if(f.isDirectory()){
fileList.add(f);
}
else
{
System.out.println("path: " + f.getAbsolutePath());
}
}
fileList.remove(f1);
}
}
}
第三种:用removeFirst()或者pollFirst(),结合addlLast().代码如下
public static void main(String[] args) {
LinkedList<File> linkedList = new LinkedList<File>();
File fileDir = new File("E:\\");
if (!fileDir.exists()) {
System.out.println("目录不存在");
return ;
}
linkedList.addLast(fileDir);
while (linkedList.size() > 0) {
File file = linkedList.removeFirst();
File[] files = file.listFiles();
if(files!=null){
for (File file2 : files) {
if (file2.isDirectory()) {
linkedList.addLast(file2);
} else {
System.out.println("path: " + file2.getAbsolutePath());
}
}
}
}
}
总结:当要操作的目录文件不太大的时候,可以用递归。(递归最容易理解)
当要操作的目录文件太大的时候,用下面2种好,当然第3种好些。(因为递归很浪费空间)
|