該原因是在寫入文件時使用了壓縮演算法,或者在下載文件時使用了壓縮格式。
如果在寫入文件時使用了壓縮演算法,例如使用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);
}
}
}