该原因是在写入文件时使用了压缩算法,或者在下载文件时使用了压缩格式。
如果在写入文件时使用了压缩算法,例如使用GZIPOutputStream或ZipOutputStream等类来写入文件,那么写入的文件就是压缩文件。
在下载文件时,如果使用了压缩格式,例如ZIP或GZIP等格式,那么下载下来的文件就是压缩包。
⑵ java前端下载完打开压缩文件头部错误
java前端下载完打开压缩文件头部错误解决办法:
1、将本地数据备份成zip文件。
2、将备份的zip文件通过sftp上传到文件服务器。
3、将文件服务器上的zip文件下载到运行服务器。
4、将下载的zip文件解压到本地(文件大小超过50KB时报文件被损坏)。
⑶ java完成批量下载时,压缩文件怎么命名
看你的代码应该下载zip文件,对应的contentType 是application/x-zip-compressed
getResponse().setContentType("application/octet-stream");修改为getResponse().setContentType("application/x-zip-compressed");
⑷ java做下载功能的时候碰到了压缩文件已损坏是什么情况,单个文件(多个文件打包压缩)解压出来是可以用的
把下载压缩包后缀名改成.zip就可以了
⑸ java中将一个文件夹下所有的文件压缩成一个文件,然后,解压到指定目录.
import java.io.*;
import java.util.zip.*;
public class CompressD {
// 缓冲
static byte[] buffer = new byte[2048];
public static void main(String[] args) throws Exception {
// 来源
File inputDir = new File("C:\\CompressTest\\");
// 目标
FileOutputStream fos = new FileOutputStream("C:\\CompressTest.zip");
// 过滤
ZipOutputStream zos = new ZipOutputStream(fos);
// 压缩
zip(inputDir.listFiles(), "", zos);
// 关闭
zos.close();
}
private static void zip(File[] files, String baseFolder, ZipOutputStream zos)
throws Exception {
// 输入
FileInputStream fis = null;
// 条目
ZipEntry entry = null;
// 数目
int count = 0;
for (File file : files) {
if (file.isDirectory()) {
// 递归
zip(file.listFiles(), file.getName() + File.separator, zos);
continue;
}
entry = new ZipEntry(baseFolder + file.getName());
// 加入
zos.putNextEntry(entry);
fis = new FileInputStream(file);
// 读取
while ((count = fis.read(buffer, 0, buffer.length)) != -1)
// 写入
zos.write(buffer, 0, count);
}
}
}