我试图遍历文件夹并列出特定文件结尾的所有文件。我试图用递归方法解决这个问题,但我没有到达任何地方。
private int counter = 0;
public void printAllJavaFiles(File directory) {
printFile(directory);
File[] subDirectories = directory.listFiles();
for (File file : subDirectories) {
printAllJavaFiles(file);
}
}
private void printFile(File file) {
// Get file extension
String fileExtension = "";
int i = file.getName().lastIndexOf('.');
if (i >= 0) {
fileExtension = file.getName().substring(i + 1);
}
if (fileExtension.equals("java")) {
System.out.println("File: " + file.getName() + " Size: " + file.length());
}
}
有什么建议吗?我真的不知道如何在目录结构中上下移动。它只是进入第一个文件夹,一旦完成列出它的文件就会抛出一个nullpointerexception。
答案 0 :(得分:5)
您应该使用File.isDirectory()
方法。像这样:
public void printAllJavaFiles(File directory) {
if (directory.isDirectory()) {
File[] subDirectories = directory.listFiles();
for (File file : subDirectories) {
printAllJavaFiles(file);
}
}else {
printFile(directory);
}
}
此方法的文档:https://docs.oracle.com/javase/7/docs/api/java/io/File.html#isDirectory()
这个想法是,对于每个文件,检查它是否是文件夹,如果是,请进行递归调用。如果没有,只需打印文件即可。