Comparator を用意してTreeSetに格納する。
import java.io.File;
import java.util.Comparator;
/**
* ディレクトリを優先にするFileの Comparator
*/
public class FilelistComparator implements Comparator<File>{
@Override
public int compare(File f1, File f2){
if *1 || (f1.isFile() && f2.isFile())){
return f1.getName().compareTo(f2.getName());
}
return f1.isDirectory() ? -1 : 0;
}
}
あるいは、staticメソッドにして
public final static List<File> listFilesDirectory(File file){
List<File> list = new ArrayList<File>();
if (!file.isDirectory()) return list;
Set<File> set = new TreeSet<File>(new Comparator<File>(){
@Override
public int compare(File f1, File f2){
if *2 || (f1.isFile() && f2.isFile())){
return f1.getName().compareTo(f2.getName());
}
return f1.isDirectory() ? -1 : 0;
}
});
for(File f:file.listFiles()) set.add(f);
for(File f:set) list.add(f);
return list;
}
もっと良い方法があるといいのに。