java查找文件重復(fù)內(nèi)容代碼怎么寫

小億
182
2023-09-26 12:38:41
欄目: 編程語言

你可以使用Java的File類和BufferedReader類來實(shí)現(xiàn)文件內(nèi)容的查找。以下是一個(gè)示例代碼,該代碼可以查找指定文件夾下所有文件中的重復(fù)內(nèi)容:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
public class FindDuplicateContent {
public static void main(String[] args) {
// 指定文件夾路徑
String folderPath = "your_folder_path";
// 用于存儲(chǔ)文件內(nèi)容和對(duì)應(yīng)的文件路徑
Map<String, Set<String>> contentMap = new HashMap<>();
// 遍歷文件夾下的所有文件
File folder = new File(folderPath);
for (File file : folder.listFiles()) {
if (file.isFile()) {
String content = getFileContent(file);
if (content != null) {
// 將文件內(nèi)容作為key,文件路徑作為value存入map中
if (contentMap.containsKey(content)) {
contentMap.get(content).add(file.getAbsolutePath());
} else {
Set<String> filePaths = new HashSet<>();
filePaths.add(file.getAbsolutePath());
contentMap.put(content, filePaths);
}
}
}
}
// 輸出重復(fù)內(nèi)容和對(duì)應(yīng)的文件路徑
for (Set<String> filePaths : contentMap.values()) {
if (filePaths.size() > 1) {
System.out.println("重復(fù)內(nèi)容:" + filePaths);
}
}
}
private static String getFileContent(File file) {
try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
StringBuilder content = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
content.append(line);
}
return content.toString();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}

請(qǐng)將代碼中的your_folder_path替換為你要查找的文件夾的路徑。運(yùn)行這段代碼后,它會(huì)列出重復(fù)的文件內(nèi)容和對(duì)應(yīng)的文件路徑。

0