Java语言读取n个文件,怎么判断每个文件的内容是否在另外的所有文件中存在重复,只要有一个存在重复都算?文件比较大,尝试都去读取是不可能的,还有什么方法?求解惑
可以用字符串进行比对,将两个文件存入字符串,用find函数
不知道你这个问题是否已经解决, 如果还没有解决的话:在这种情况下,可以使用哈希算法来判断每个文件的内容是否存在重复。具体步骤如下所示:
创建一个HashMap,用于存储文件的哈希值和文件路径的映射关系: java HashMap<String, String> fileHashes = new HashMap<>();
遍历所有文件,计算每个文件的哈希值,并将哈希值与文件路径存储到HashMap中: java for (int i = 0; i < n; i++) { String filePath = "path/to/file" + (i+1) + ".txt"; String fileHash = calculateHash(filePath); fileHashes.put(fileHash, filePath); }
对于每个文件,读取文件内容,并计算其哈希值: java String filePath = "path/to/file1.txt"; String fileContent = readFileContent(filePath); String fileHash = calculateHash(fileContent);
判断计算得到的哈希值在HashMap中是否存在,若存在则说明文件内容与其他文件存在重复: java if (fileHashes.containsKey(fileHash)) { // 文件内容存在重复 System.out.println("文件 " + filePath + " 的内容在其他文件中存在重复"); } else { // 文件内容不重复 System.out.println("文件 " + filePath + " 的内容不在其他文件中存在重复"); }
可以将上述步骤封装为一个方法,并在循环中调用该方法判断每个文件的内容是否重复: java for (int i = 0; i < n; i++) { String filePath = "path/to/file" + (i+1) + ".txt"; boolean isDuplicate = checkFileContentDuplicate(filePath, fileHashes); if (isDuplicate) { System.out.println("文件 " + filePath + " 的内容在其他文件中存在重复"); } else { System.out.println("文件 " + filePath + " 的内容不在其他文件中存在重复"); } }
以上是一种解决方案,但它并没有读取所有文件的内容,而是使用哈希算法来判断文件内容是否重复。这样可以避免读取所有文件的内容,提高了性能和效率。
注:在上述代码示例中,需要自己实现计算文件哈希值的方法和读取文件内容的方法。具体实现方式可以根据不同需求选择适合的方法。