Java:在指定文件夹中查找.txt文件

Sri*_*Sri 53 java file

是否有内置的Java代码可以解析给定的文件夹并搜索.txt文件?

djn*_*jna 125

您可以使用该类listFiles()提供的方法java.io.File.

import java.io.File;
import java.io.FilenameFilter;

public class Filter {

    public File[] finder( String dirName){
        File dir = new File(dirName);

        return dir.listFiles(new FilenameFilter() { 
                 public boolean accept(File dir, String filename)
                      { return filename.endsWith(".txt"); }
        } );

    }

}
Run Code Online (Sandbox Code Playgroud)

  • @Funsuk,这对我来说很好,至少对于我尝试过的简单测试案例.36人似乎同意.它以什么方式对你不起作用? (2认同)

cle*_*tus 22

尝试:

List<String> textFiles(String directory) {
  List<String> textFiles = new ArrayList<String>();
  File dir = new File(directory);
  for (File file : dir.listFiles()) {
    if (file.getName().endsWith((".txt"))) {
      textFiles.add(file.getName());
    }
  }
  return textFiles;
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您希望进行不区分大小写的搜索:

    if (file.getName().toLowerCase().endsWith((".txt"))) {
Run Code Online (Sandbox Code Playgroud)

如果要通过目录树递归搜索文本文件,则应该能够将上述内容修改为递归函数或使用堆栈的迭代函数.


Joh*_*ire 20

import org.apache.commons.io.filefilter.WildcardFileFilter;

.........
.........

File dir = new File(fileDir);
FileFilter fileFilter = new WildcardFileFilter("*.txt");
File[] files = dir.listFiles(fileFilter);
Run Code Online (Sandbox Code Playgroud)

上面的代码对我很有用


小智 6

这真的很有用,我用它稍作改动:

filename=directory.list(new FilenameFilter() { 
    public boolean accept(File dir, String filename) { 
        return filename.startsWith(ipro); 
    }
});
Run Code Online (Sandbox Code Playgroud)