Javaで指定するフォルダにあるすべてのファイルをソートするには
2009/01/24 23:27Update
Javaでは、Arrays.sort(Object [])を利用してオブジェクトをソートすることができます。本文は、Arrays.sortで指定するフォルダにあるすべてのファイルをソートする方法についてサンプルから学びます。
とりあえず、サンプルから
FileSortUtil.java
一応ソースの中に解説が書かれていますので、ここでは省きます。
FileSortUtil.javapublic class FileSortUtil {
//for test
public static void main(String []args) {
//c:\\sortにあるすべてのファイルを名称順でソートします
//まず、c:\\sortというフォルダを取得
File dirFile = new File("c:\\sort");
//ソート
File [] sortedFiles = listSortedFiles(dirFile);
}
//指定するフォルダに対してファイルの名称順でソートを行います
public static File[] listSortedFiles(File dirFile) {
assert dirFile.isDirectory();
//フォルダにあるすべてのファイルを取得します
File[] files = dirFile.listFiles();
//比較機能(Comparableを実装)を備えるファイルラッパ
FileWrapper [] fileWrappers = new FileWrapper[files.length];
for (int i=0; i<files.length; i++) {
fileWrappers[i] = new FileWrapper(files[i]);
}
//ソートを行う
Arrays.sort(fileWrappers);
//ソートしたオブジェクトから戻り値にセット
File []sortedFiles = new File[files.length];
for (int i=0; i<files.length; i++) {
sortedFiles[i] = fileWrappers[i].getFile();
}
return sortedFiles;
}
}
class FileWrapper implements Comparable {
/** File */
private File file;
public FileWrapper(File file) {
this.file = file;
}
//比較用メソッド
public int compareTo(Object obj) {
assert obj instanceof FileWrapper;
FileWrapper castObj = (FileWrapper)obj;
if (this.file.getName().compareTo(castObj.getFile().getName()) > 0) {
return 1; //大きい場合
} else if (this.file.getName().compareTo(castObj.getFile().getName()) < 0) {
return -1; //小さい場合
} else {
return 0; //等しい場合
}
}
public File getFile() {
return this.file;
}
}
一応ソースの中に解説が書かれていますので、ここでは省きます。
Sponsored Link
Comments
- Relative Articles
- Java開発及び実行環境の構築 | Linux篇 - (2008/08/31 20:34)
- Java開発及び実行環境の構築 | Windows篇 - (2008/08/31 21:18)
- 5分でJava Hello World! - (2008/08/31 22:13)
- Java言語の制御構文 - 条件分岐if/else/else if - (2008/10/01 21:30)
- Java言語の繰り返し制御構文 - for文 - (2008/10/03 18:22)
- Java言語の繰り返し制御構文 - do ... while文 - (2008/10/03 21:23)
- Java言語の繰り返し制御構文 - while文 - (2008/10/03 21:32)
- Java言語の基礎 - javacコマンドによるコンパイル - (2008/10/10 17:58)
- Java アクセス修飾子概要 - (2008/10/29 18:31)
- Javaアノテーション機能 概要 - (2009/02/12 13:06)