我正在尝试遍历文件夹并列出特定文件结尾的所有文件.我试图用递归方法解决这个问题,但我没有得到任何地方.
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());
}
}
Run Code Online (Sandbox Code Playgroud)
有什么建议?我真的不知道如何在目录结构中上下移动.它只是进入第一个文件夹,一旦它完成列出它的文件,它会抛出一个nullpointerexception.
你应该使用这种File.isDirectory()方法.像这样:
public void printAllJavaFiles(File directory) {
if (directory.isDirectory()) {
File[] subDirectories = directory.listFiles();
for (File file : subDirectories) {
printAllJavaFiles(file);
}
}else {
printFile(directory);
}
}
Run Code Online (Sandbox Code Playgroud)
有关该方法的文档:https://docs.oracle.com/javase/7/docs/api/java/io/File.html#isDirectory()
我们的想法是,对于每个文件,检查它是否是文件夹,如果是,请进行递归调用.如果没有,只需打印文件即可.
| 归档时间: |
|
| 查看次数: |
850 次 |
| 最近记录: |