私は小さなWebサーバアプリケーションを書いています。今私は問題がある、私は今どのようにインデックスファイルを表示することはできません。 indexで始まるディレクトリ内の最初のファイルを取得するにはどうすればよいですか?ファイル拡張子に関係なく私はnew File("Path/To/Dir");
とdirを得る。フォルダ内のJava検索インデックス
私を助けてください!
挨拶
私は小さなWebサーバアプリケーションを書いています。今私は問題がある、私は今どのようにインデックスファイルを表示することはできません。 indexで始まるディレクトリ内の最初のファイルを取得するにはどうすればよいですか?ファイル拡張子に関係なく私はnew File("Path/To/Dir");
とdirを得る。フォルダ内のJava検索インデックス
私を助けてください!
挨拶
あなたがFile#list()
メソッドを使用することができます。
// your directory in which you look for index* files
File directory = new File(".");
// note that indexFileNames may be null
String[] indexFileNames = directory.list(new FilenameFilter() {
public boolean accept(File dir, String name) {
return name.startsWith("index");
}
});
if (indexFileNames != null) {
for (String name : indexFileNames) {
System.out.println(name);
}
}
これは、接頭辞がで始まるすべてのファイルを検索します。
list()
メソッドは、ファイルとディレクトリの両方の名前を返します。ファイルのみが必要な場合は、FilenameFilter
ロジックを補強することができます。
これらのファイルの最初を取得するには、何らかの順序を定義する必要があります。たとえば、あなたがalfabetically自分の名前(大文字と小文字を区別した方法で)上のファイルをソートする必要がある場合、あなたは次のことを行うことができます:
if (indexFileNames != null) {
// sorting the array first
Arrays.sort(indexFileNames);
// picking the first of them
if (indexFileNames.length > 0) {
String firstFileName = indexFileNames[0];
// ... do something with it
}
}
あなたには、いくつかの特別な順序必要がある場合にも、いくつかのコンパレータで並べ替えることができます:
をif (indexFileNames.length > 0) {
String firstFileName = Collections.min(Arrays.asList(indexFileNames));
// ... process it
}
Collections#min()
もComparator
とバージョンがあります。
Arrays.sort(indexFileNames, comparator);
は、さらにもう1つの方法は、ソートを回避し、Collections#min()
方法を使用することです。
そして、どうすれば最初のものを手に入れることができますか? – Markus
「最初の」要素の選択に関する追加情報を使って答えを更新しました –