1. ホーム
  2. java

[解決済み] JavaでFileFilterを作るには?

2022-03-04 04:39:08

質問

.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の良い例でもあります。

基本的には ファイルフィルター クラスを作成し、その 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;
}

あるいは、もっと簡単に使うなら ファイル名フィルタ は、ファイル名を引数とする accept メソッドを持っているので、手動でそれを取得する必要はありません。