嗨我想根據數字排序目錄列表。我有像11-20,1-5,6-10,21-30
等命名目錄現在我想根據其中的數字進行排序,以便1至N目錄來順序我的意思是爲了1-5,6-10,11-20,21-30
。我正在使用下面的代碼,但它不工作。如何基於整數名稱對目錄進行排序?
File[] dirList = mainDir.listFiles();
Arrays.sort(dirList);
我是新來的文件和目錄在Java操作請幫助提前感謝。
嗨我想根據數字排序目錄列表。我有像11-20,1-5,6-10,21-30
等命名目錄現在我想根據其中的數字進行排序,以便1至N目錄來順序我的意思是爲了1-5,6-10,11-20,21-30
。我正在使用下面的代碼,但它不工作。如何基於整數名稱對目錄進行排序?
File[] dirList = mainDir.listFiles();
Arrays.sort(dirList);
我是新來的文件和目錄在Java操作請幫助提前感謝。
以下行:
Arrays.sort(dirList);
排序使用File#compareTo()
方法,通過路徑基本上排序文件文件。
您必須創建的Comparator自定義實現然後調用:
Arrays.sort(dirList, new YourCustomComparator());
例如:
Comparator<File> comparator = new Comparator<File>() {
@Override
public int compare(File o1, File o2) {
/*
* Here, compare your two files with your own algorithm.
* Here is an example without any check/exception catch
*/
String from1 = o1.getName().split("-")[0]; //For '1-5', it will return '1'
String from2 = o2.getName().split("-")[0]; //For '11-20', it will return '11'
//Convert to Integer then compare :
return Integer.parseInt(from2)-Integer.parseInt(from1);
}
}
//Then use your comparator to sort the files:
Arrays.sort(dirList, comparator);
除了Arnauds答案,如果你只是想有目錄,你可以使用文件過濾器另外:
FileFilter filter = new FileFilter()
{
public boolean accept(File file) {
return file.isDirectory();
}
};
File[] dirList = mainDir.listFiles(filter);