我想将具有不同文件扩展名的两个不同文件压缩成一个文件。一个文件分机是 .txt ,另一个是 .amr 。我的zip文件最终大小为0KB XXXXXX.zip,当我提取它时,它会给我一条消息,说明文件已损坏或损坏。
我压缩了两种不同的文件类型,也许遇到的情况是0KB。
任何人都有更好的方法将文件压缩在一起吗?
答案 0 :(得分:0)
我找到了来自here和stackoverflow的示例。他们使用“java.util.zip”库,它们很简单
答案 1 :(得分:-1)
这是我在我的应用程序中用来制作zip文件的方法...只需将文件放入数组并静态执行makeZip
方法。
import java.util.zip。*
public class Zipper {
/**
* Creates a zip file from a File array <br>
* <br>
* @param files to add to zipFile.
* @param zipFile file zip to create.
* @return compressed zip file.
*
* @throws IOException in case of error.
*/
private static synchronized File makeZip(File[] files, File zipFile)
{
try {
FileOutputStream fos = new FileOutputStream(zipFile.getAbsolutePath());
ZipOutputStream zos = new ZipOutputStream(fos);
for (File fileEntry : files) {
FileInputStream fis = new FileInputStream(fileEntry);
ZipEntry zipEntry = new ZipEntry(fileEntry.getName());
zos.putNextEntry(zipEntry);
byte[] bytes = new byte[1024];
int length;
while ((length = fis.read(bytes)) >= 0)
{
zos.write(bytes, 0, length);
}
zos.closeEntry();
fis.close();
// delete already compressed files
fileEntry.delete();
}
zos.close();
fos.close();
} catch (IOException e) {
// catch exception
}
return zipFile;
}
}
使用(如果您将方法放在课程Zipper
中):
File[] files = new File[2];
files[0] = new File("path/to/file.amr");
files[1] = new File("path/toother/file.txt");
File zipfile = Zipper.makefile(files, new File("destiny/of/file.zip"));