2017-03-04 4 views
0

file.listFile()を使用して、指定されたパスのファイルとディレクトリを一覧表示しています。私がfile.ListFile()を使用している理由は、ユーザーがディレクトリのみを返すか、ファイルのみを必要としているかどうかに基づいてFileFilterを使用しているからです。しかし、私が持っている結果は、指定されたパスのフォルダとファイルだけを表示し、サブフォルダとファイルは表示しないということです。これは私が今で働いているものです:サブディレクトリとファイルのリストにfile.listFiles()を使用する方法

file = new File(directory.getText().trim()); 

// Used this for testing; ListFiles() is a method 
File[] test = ListFiles(directory.getName()); // I made up that will list the subfolders and files. 
results.setListData(test); // Also for testing. results is a JList 

// This is what i previously had that only lists folders and file in that directory 
results.setListData(file.listFiles(new Filter() { 
    public boolean accept(File file) { 
    if (directories.isSelected()) { 
     // Directories checkBox 
     if (files.isSelected()) { 
     // Files checkBox 
     // FILES && DIRECTORIES 
     return (file.isDirectory() || file.isFile()) && (StringUtils.contains(file.getName(), userInput.getText().trim())); 
     } 
     // DIRECTORIES 
     return (file.isDirectory()) && (StringUtils.contains(file.getName(), userInput.getText().trim())); 
     } else { 
     if (files.isSelected()) { 
      // FILES 
      return (file.isFile()) && (StringUtils.contains(file.getName(), userInput.getText().trim())); 
     } 
     } 
     return true; 
    } 
    })); 
} 

私はちょうどフィルタが

答えて

0

File#listFiles()が、それはすべてのサブディレクトリを歩くと述べているしないためのマニュアルを参照して関与しながら約行くするかどうかはわかりません。だから、自分でそれをする必要があります。 listFiles()から返されるディレクトリごとに、再帰的にlistFiles()を呼び出す必要があります。

他の構造ですべてのファイルを収集している限り、フィルタでこれを行うことができます。フィルタを単独で使用して結果にファイルを追加することはできません。そして私はそれをすることをお勧めしません。

あなたはフィルタをの前述し、このような何かをやったほうが良いかもしれません:フィルターインラインを持っていないために容易になり、それの外側の関数にし、FileFilterのと `LISTFILESを()`呼び出します

List<File> files = new ArrayList<>(); 

public void getFiles(File file) { 
    for (File file : file.listFiles()) { 
     if (file.isDirectory()) { 
      if (collectDirectories) { 
       files.add(file); 
      } 
      getFiles(file); 
     } else { 
      if (collectFiles) { 
       files.add(file); 
      } 
     } 
    } 
} 
+0

パラメータとしての機能? – Vince

+0

それはあなたがすべてのサブディレクトリを歩くのに役立つわけではありません。私の編集を参照してください。 – Jeremy

+0

リストを使用している唯一の問題は、 'results.setListData()'を使用すると、リストではなく 'File []'が必要なことです。 – Vince

関連する問題