如何在Java中制作FileFilter?

2022-09-01 00:25:14

如何为.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();
        }

答案 1

试试这样的东西...

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");
    }
});

答案 2

在这里,您将找到一些工作示例。这也是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;
}

或者更简单易用的是FileNameFilter,它具有以文件名作为参数的接受方法,因此您无需手动获取它。


推荐