我一直在開發一個重複的查找程序。我目前面臨的挑戰是計算在文件夾和子文件夾中找到的重複文件的數量。計算文件時遇到問題
我的代碼的作用是:只要它到達具有重複項的特定文件,它就會計數正確,但當它到達具有多個項的不同文件時,它將從頭開始。
這不是我想要的。我想要的是它計算具有多個副本的文件總數。
這裏是我的代碼:
public void findDuplicateFiles(File[] files) throws IOException {
Map<String, List<File>> filesByHash = new HashMap<>();
int number = 0;
for (File file : files) {
if (!file.isFile()) {
findDuplicateFiles(file.listFiles());
continue;
}
MD5.initNativeLibrary();
String hash = MD5.asHex(MD5.getHash(file));
List<File> filesForHash = filesByHash.get(hash);
if (filesForHash == null) {
filesByHash.put(hash, filesForHash = new ArrayList<>());
}
filesForHash.add(file);
}
for (Map.Entry<String, List<File>> entry : filesByHash.entrySet()) {
List<File> filesForHash = entry.getValue();
if (filesForHash.size() > 1) {
String hash = entry.getKey();
System.out.printf("%,d files have hash %s:%n",
filesForHash.size(), hash);
int index = filesForHash.size() - 1;
filesForHash.remove(index);
DefaultListModel model = (DefaultListModel) list.getModel();
for (File file : filesForHash) {
// This is where things goes wrong
File fs = file.getAbsoluteFile();
for (int i = 1; i <= fs.length(); i++);
number++;
//count.setText(number + " Files");
//model.addElement(file);
System.out.println(" " + file);
System.out.println(number + " Files");
}
};
}
//System.out.println(" No Duplicate Found ");
}
貝婁是結果我得到:
6 files have hash da8f60e8474f7c89f368e5d6d379dcdc:
C:\Users\Mbaegbu\Documents\Bandicam\files\bandicam 2014-07-02 10-55-03-421 - Copy (2).jpg
1 Files
C:\Users\Mbaegbu\Documents\Bandicam\files\bandicam 2014-07-02 10-55-03-421 - Copy (3).jpg
2 Files
C:\Users\Mbaegbu\Documents\Bandicam\files\bandicam 2014-07-02 10-55-03-421 - Copy (4).jpg
3 Files
C:\Users\Mbaegbu\Documents\Bandicam\files\bandicam 2014-07-02 10-55-03-421 - Copy (5).jpg
4 Files
C:\Users\Mbaegbu\Documents\Bandicam\files\bandicam 2014-07-02 10-55-03-421 - Copy.jpg
5 Files
2 files have hash da8f60e8474f7c89f368e5d6d379dcdc:
C:\Users\Mbaegbu\Documents\Bandicam\bandicam 2014-07-02 10-55-03-421 - Copy.jpg
1 Files
3 files have hash f884c30bfad89a285507d4c381700583:
C:\Users\Mbaegbu\Documents\Bandicam\bandicam 2014-07-16 22-09-14-091 - Copy - Copy.jpg
2 Files
C:\Users\Mbaegbu\Documents\Bandicam\bandicam 2014-07-16 22-09-14-091 - Copy.jpg
3 Files
什麼是你的問題? – Regent
你的問題究竟是什麼不明確。例子會很好,就像這些文件,重複和當前的解決方案,我得到這個,我想這個。 – SMA
對不起......我已更新該帖子。 – emekamba