Java同一文件夹压缩的MD5不一样
时间: 2023-09-03 13:14:20 浏览: 91
Java同一文件夹压缩的MD5不一样可能有以下原因:
1. 时间戳不同:如果压缩文件时,文件的创建或修改时间不同,那么压缩后的文件的MD5值也会不同。
2. 压缩算法不同:如果使用不同的压缩算法,压缩后的文件的MD5值也会不同。
3. 文件名不同:如果压缩文件时,其中的文件名不同,那么压缩后的文件的MD5值也会不同。
4. 文件内容不同:如果同一文件夹中的文件内容不同,那么压缩后的文件的MD5值也会不同。
综上所述,同一文件夹压缩的MD5不一样,可能是因为其中的原文件或者压缩方式不同导致的。
相关问题
java 将文件夹压缩zip
以下是Java将文件夹压缩为zip的示例代码:
```java
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class ZipUtil {
public static void main(String[] args) {
String sourceFolderPath = "E:/packs"; // 要压缩的文件夹路径
String zipFilePath = "E:/examineeInfo.zip"; // 压缩包输出路径
try {
zipFolder(sourceFolderPath, zipFilePath);
System.out.println("压缩完成");
} catch (IOException e) {
e.printStackTrace();
}
}
public static void zipFolder(String sourceFolderPath, String zipFilePath) throws IOException {
FileOutputStream fos = new FileOutputStream(zipFilePath);
ZipOutputStream zos = new ZipOutputStream(fos);
File sourceFolder = new File(sourceFolderPath);
zipFile(sourceFolder, sourceFolder.getName(), zos);
zos.close();
fos.close();
}
public static void zipFile(File fileToZip, String fileName, ZipOutputStream zos) throws IOException {
if (fileToZip.isHidden()) {
return;
}
if (fileToZip.isDirectory()) {
if (fileName.endsWith("/")) {
zos.putNextEntry(new ZipEntry(fileName));
zos.closeEntry();
} else {
zos.putNextEntry(new ZipEntry(fileName + "/"));
zos.closeEntry();
}
File[] children = fileToZip.listFiles();
for (File childFile : children) {
zipFile(childFile, fileName + "/" + childFile.getName(), zos);
}
return;
}
FileInputStream fis = new FileInputStream(fileToZip);
ZipEntry zipEntry = new ZipEntry(fileName);
zos.putNextEntry(zipEntry);
byte[] buffer = new byte[1024];
int length;
while ((length = fis.read(buffer)) >= 0) {
zos.write(buffer, 0, length);
}
fis.close();
}
}
```
java md5压缩
Java MD5压缩是通过java.security.MessageDigest类中已经定义的MD5计算方法来实现的。将一个任意长度的字节串转换为一个128位的消息摘要,使用一种保密的格式(即将一个任意长度的字节串变换成一定长的大整数)来压缩大容量信息。通常情况下,通过调用update()方法传入需要计算的字符串,然后再调用digest()方法生成MD5摘要。最后,将这个128位(16个字节)的摘要转换成十六进制表示,就可以得到一个唯一的MD5值。在Java中,通过引入Scanner类来接收用户的输入,在try...catch语句块中生成MessageDigest对象,并调用该对象的update()和digest()方法计算MD5值。最后将计算后的MD5值转化为十六进制字符串并输出。