java - Listing all files with a .txt extension recursively
问题描述
I am trying to recursively search the directory and list all .txt files found. This is my code for it:
private static void listFilesForFolder(File folder) throws FileNotFoundException {
for (final File fileEntry : folder.listFiles()) {
if (fileEntry.isDirectory()) {
listFilesForFolder(fileEntry);
} else {
System.out.println(Arrays.toString(fileEntry.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.getName().endsWith(".txt");
}
})));
}
}
}
I'm using FileFilter to print out all the .txt files but it prints out null instead. Anyone know why that's the case?
解决方案
我认为您可以简单地使用语句,而不是FileFilter
在块中使用 a 。因为在这个块中你总是有一个文件(不是目录)。查看以下更改是否适合您。else
if
else
private static void listFilesForFolder(File folder) throws FileNotFoundException
{
for (final File fileEntry : folder.listFiles()) {
if (fileEntry.isDirectory()) {
listFilesForFolder(fileEntry);
} else {
if (fileEntry.getPath().toLowerCase().endsWith(".txt")) {
System.out.println(fileEntry.getPath());
}
/*System.out.println(Arrays.toString(fileEntry.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.getName().endsWith(".txt");
}
})));*/
}
}
}
编辑:
如果你真的想这样做FileFilter
,你可以这样做:
private static void listFilesForFolder2(File folder) throws FileNotFoundException
{
File[] textFiles = folder.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.isFile() && pathname.getName().toLowerCase().endsWith(".txt");
}
});
if (textFiles != null) {
for (File f : textFiles) {
System.out.println(f.getPath());
}
}
for (final File fileEntry : folder.listFiles()) {
if (fileEntry.isDirectory()) {
listFilesForFolder2(fileEntry);
}
}
}
推荐阅读
- flutter - 如何在行数据颤动中设置对齐方式?
- c# - 如何修复:“无法将类型隐式转换为‘字符串’”错误
- django - 禁止进入以继续 Django 调查中的下一个问题
- c# - 将自定义令牌 RequestValidator 添加到 ASP.NET(不是核心)
- python - 如何处理/确保 Google 服务帐户连接始终稳定
- python - 在字符串中添加数字并在python中乘以2
- macos - 如何调试无法在 macOS 10.14.6 上启动的应用程序
- php - PHP 警告:参数必须是使用 xampp 实现 Countable 的数组或对象
- javascript - 如何在不减少原始数字的情况下将 1 添加到 JavaScript 变量?
- laravel-envoy - Laravel Envoy 错误:参数太多,预期参数“命令”