0
我已經寫了一個小型的Web服務器應用程序。現在我有這個問題,我現在不怎麼顯示索引文件。我怎樣才能得到以索引開頭的目錄中的第一個文件?不管是哪個文件擴展名。我得到new File("Path/To/Dir");
的目錄。文件夾中的Java搜索索引
請幫幫我!
問候
我已經寫了一個小型的Web服務器應用程序。現在我有這個問題,我現在不怎麼顯示索引文件。我怎樣才能得到以索引開頭的目錄中的第一個文件?不管是哪個文件擴展名。我得到new File("Path/To/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);
}
}
這會找到所有以index
前綴開頭的文件。
請注意,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
}
}
你也可以排序的一些比較,如果你需要一些特殊的命令:
Arrays.sort(indexFileNames, comparator);
還有一種方法是避免排序和使用Collections#min()
方法:
if (indexFileNames.length > 0) {
String firstFileName = Collections.min(Arrays.asList(indexFileNames));
// ... process it
}
Collections#min()
也有Comparator
版本。
我怎麼能得到他們的第一個? – Markus
我已經更新了答案,並提供了關於選擇「第一個」元素的附加信息 –