当前位置: 首页 > 面试题库 >

如何在Java中制作FileFilter?

督烨赫
2023-03-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();
        }

问题答案:

在这里,您将找到一些工作示例。这也是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,它具有以filename为参数的accept方法,因此您无需手动获取它。



 类似资料:
  • 嗨,我正在使用jframe, 现在我希望人们只编辑yAdmin,人们可以看到adminForm,但他们不能触摸它之前的yAdmin关闭。

  • 问题内容: 由于数组中的equals函数仅检查实例,因此它不适用于Set。因此,我想知道如何在Java中制作一组数组? 一种可能的方法是将每个数组放在一个对象中,并为该类实现equals函数,但这会降低性能吗? 问题答案: 由于ArrayList类已经包装了一个数组,因此您可以扩展它并覆盖and 方法。这是一个示例: 更新: 您甚至可以重写它以用于一般用途,只需将代码更改为:

  • 问题内容: 我创建了一个使用JFrame的GUI。我应该怎样做模态? 问题答案: 如果要使窗口成为模态,最好的选择是使用而不是。查看有关Java 6中的引入的详细信息,以获取更多信息。还有一个教程。 下面是一些示例代码,用于将显示在其中是模态的到。除了构造函数外,它遵循与打开a相同的模式。 编辑:更新了Modality API链接并添加了教程链接(向@spork点头表示凹凸)。

  • 问题内容: 我想创建一个布尔数组,该数组的大小将为用户输入。例如-用户可能会输入一个大数字,例如1000000000000; 所以然后我必须创建一个大小为1000000000000的布尔数组。我面临的问题是,我无法将输入存储为int,因为它不能容纳这么大的数字- 因此我无法创建该数组。Double是一个我可以将输入数字存储为double,但是我不知道如何创建double大小的数组。这就是- 如果目

  • 有人知道如何在Java代码中实现这个SQL代码吗? 时间格式类似于数据库中的36000,然后在这个sql命令之后是:10:00 我想让这个函数在Java中工作,而不是在SQL中工作。

  • 3)我已经研究了SAAJ和JAX-WS,但我发现它们太复杂了,而且我也不知道如何在请求中执行自定义HTTP头。 看来我又在设计Loadrunner了。所以我的问题是什么可以是实现上述要求的步骤。 我有一个wsdl文件、证书、URL和一些自定义HTTP头要包含在请求中。