ディレクトリ内のすべてのファイルのサイズを計算する小さな関数を作成しました。実際の関数はさらに多くのことを行いますが、この例は簡潔にするために使用されています。
これは機能し、ディレクトリを再帰的にウォークするのは簡単ですが、すでに処理されているすべてのファイル名を除外したいと思います。内のすべてのファイル名を追跡して、ファイルList
のサイズを取得する前に、ファイルがに存在するかどうかを確認し、存在する場合List
は除外する必要があるようにします。MD5チェックサムなどは必要ありません。私の状況では、ファイル名で十分です。
関数から返すことができる値は1つだけであり、Javaでは参照渡しが許可されていないため、これを実装するための最良の方法についてはかなり迷っています。これが私のコードです:
public static Long getFileSize(File dirDirectory) {
Long lngSize = new Long(0);
for (File filItem : dirDirectory.listFiles()) {
if (filItem.isDirectory()) {
lngSize += getFileSize(filItem);
}
else {
//Is a file with the same filename alrwady been calculated
//then exclude it
//else
//include it.
lngSize += filItem.length();
}
}
return lngSize;
}