如何在java中创建FileFilter?

Har*_*9pl 39 java filefilter

喜欢在标题中如何过滤到.txt文件?

我写了这样的东西,但它有错误:(

 private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {                                           
        JFileChooser chooser = new JFileChooser();
        int retval = chooser.showOpenDialog(null);

        String yourpath = "E:\\Programy Java\\Projekt_SR1\\src\\project_sr1";
        File directory = new File(yourpath);
        String[] myFiles;
        FilenameFilter filter = new FilenameFilter() {
        public boolean accept(File directory, String fileName) {
            return fileName.endsWith(".txt");
        }
        };
        myFiles = directory.list(filter);


        if(retval == JFileChooser.APPROVE_OPTION)
        {
            File myFile = chooser.getSelectedFile();
        }
Run Code Online (Sandbox Code Playgroud)

Fra*_*nky 47

尝试这样的事......

String yourPath = "insert here your path..";
File directory = new File(yourPath);
String[] myFiles = directory.list(new FilenameFilter() {
    public boolean accept(File directory, String fileName) {
        return fileName.endsWith(".txt");
    }
});
Run Code Online (Sandbox Code Playgroud)

  • in line return!fileName.endWith(".txt"); 我收到错误endWith - 找不到符号 (2认同)

Har*_*Joy 25

在这里你会发现一些有用的例子.也是JFileChooser中使用的FileFilter的一个很好的例子.

基础是,您需要覆盖FileFilter类并在其accpet方法中编写自定义代码.上例中的accept方法是根据文件类型进行过滤:

public boolean accept(File file) {
    if (file.isDirectory()) {
      return true;
    } else {
      String path = file.getAbsolutePath().toLowerCase();
      for (int i = 0, n = extensions.length; i < n; i++) {
        String extension = extensions[i];
        if ((path.endsWith(extension) && (path.charAt(path.length() 
                  - extension.length() - 1)) == '.')) {
          return true;
        }
      }
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

或者更简单的使用FileNameFilter,它具有filename作为参数的accept方法,因此您不需要手动获取它.


Rag*_*air 9

从JDK8开始,就像单词一样简单

final String extension = ".java";
final File currentDir = new File(YOUR_DIRECTORY_PATH);
File[] files = currentDir.listFiles((File pathname) -> pathname.getName().endsWith(extension));
Run Code Online (Sandbox Code Playgroud)


See*_*ega 5

从Java7开始,您可以简单地使用 FileNameExtensionFilter(String description, String... extensions)

一个简单的JFileChooser模拟示例将是:

JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileFilter(new FileNameExtensionFilter("Text files", "txt"));
Run Code Online (Sandbox Code Playgroud)

我知道很久以前就回答了这个问题,但这实际上是最简单的解决方案.