Android编写一个在根据HD5值当前目录下所有的文件中寻找所有相同文件的代码
时间: 2024-05-07 09:20:33 浏览: 158
以下是一个基于Java的Android程序,可以在当前目录下查找所有相同文件:
```java
import java.io.File;
import java.io.FileInputStream;
import java.security.MessageDigest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
public class FindSameFile {
public static void main(String[] args) throws Exception {
// 获取当前目录
String currentPath = System.getProperty("user.dir");
// 获取所有文件
File[] files = new File(currentPath).listFiles();
// 计算所有文件的 MD5 值
Map<String, ArrayList<String>> fileMap = new HashMap<>();
for (File file : files) {
if (file.isFile()) {
String md5 = getFileMD5(file);
if (!fileMap.containsKey(md5)) {
fileMap.put(md5, new ArrayList<>());
}
fileMap.get(md5).add(file.getAbsolutePath());
}
}
// 输出相同的文件列表
for (ArrayList<String> fileList : fileMap.values()) {
if (fileList.size() > 1) {
System.out.println("相同的文件:");
for (String filePath : fileList) {
System.out.println(filePath);
}
System.out.println();
}
}
}
public static String getFileMD5(File file) throws Exception {
MessageDigest md5 = MessageDigest.getInstance("MD5");
FileInputStream fis = new FileInputStream(file);
byte[] buffer = new byte[1024];
int length;
while ((length = fis.read(buffer)) != -1) {
md5.update(buffer, 0, length);
}
fis.close();
byte[] md5Bytes = md5.digest();
StringBuilder sb = new StringBuilder();
for (byte md5Byte : md5Bytes) {
String hexString = Integer.toHexString(0xFF & md5Byte);
if (hexString.length() == 1) {
sb.append("0");
}
sb.append(hexString);
}
return sb.toString();
}
}
```
你需要把这个程序放到Android工程里面的一个Java文件中,然后在你的Activity里面调用它的main()方法即可。注意,这个程序会递归地查找当前目录下的所有文件,包括子目录中的文件。如果你只想查找当前目录下的文件,可以在程序中加一些判断。
阅读全文