【发布时间】:2014-03-08 09:30:45
【问题描述】:
我制作了一个程序,列出了您选择的扩展名目录中的所有文件名。现在我想而且我不知道如何更改它以列出子目录中的所有文件。你有什么想法?这是我的代码。谢谢!
import java.util.*;
import java.io.*;
public class Program {
public static void main(String str[]){
try{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("1.Enter directory name:");
String adress = br.readLine();
System.out.println("2.Enter file extension:");
String exten = br.readLine();
File directory = new File(adress);
File[] f = directory.listFiles();
List<String> files = new ArrayList<String>();
List<String> valid = new ArrayList<String>();
List<String> names = new ArrayList<String>();
for(int i=0; i < f.length; i++){
if(f[i].isFile()){
files.add(f[i].getName());
}
}
for(int i=0; i < files.size(); i++){
if (files.get(i).endsWith(exten)){
valid.add(files.get(i));
}
}
for(int i=0; i < valid.size(); i++){
int pos = valid.get(i).lastIndexOf(".");
names.add(valid.get(i).substring(0, pos));
System.out.println(names.get(i));
}
}
catch(Exception e){
e.printStackTrace();
}
}
}
【问题讨论】:
-
您使用的是什么版本的 Java?在 Java 7 中,您可以使用 FileVisitor,在 Java 8 中,有一个内置方法,您可以将所有代码写成两行。
-
阅读递归,因为这是您想要使用的。您需要创建自己的方法,而不仅仅是使用 main 方法。
-
请学习使用增强的 for 循环。您应该正确使用
FileAPI,使用FileFilter会对您有所帮助。至于你的主要问题 - 你需要递归。 -
谢谢大家的回复。我最近才开始学习 JAVA,所以我不知道增强循环。从现在开始使用,谢谢!