gpt4 book ai didi

java - 压缩和解压 jar ,大小不一样!

转载 作者:行者123 更新时间:2023-12-01 05:50:56 27 4
gpt4 key购买 nike

我正在为游戏制作一个模组应用程序。当我解压缩和压缩相同的文件时:由于某种原因,尽管它可以使用 7Zip 打开,但在实际应用程序中却无法打开。尽管我没有编辑解压缩的文件 - 它丢失了几个字节。我从网上收集了这些方法,在过去的 5 个小时里一直在编辑和重试,但没有成功,有帮助吗?谢谢!

这是我的代码:

class zipper
{
static byte[] buffer = new byte[4096];

public static void unzip(File zipfile, File outputfolder) throws Exception
{
JarFile zip = new JarFile(zipfile);

Enumeration entries = zip.entries();
while(entries.hasMoreElements())
{
JarEntry entry = (JarEntry) entries.nextElement();
File unzipped = new File(outputfolder,entry.getName());

if (entry.isDirectory() && !unzipped.exists())
{
unzipped.mkdirs();
continue;
}
else if (!unzipped.getParentFile().exists())
unzipped.getParentFile().mkdirs();

InputStream in = zip.getInputStream(entry);
FileOutputStream fos = new FileOutputStream(unzipped);

int count;
while((count = in.read(buffer, 0, buffer.length)) != -1)
fos.write(buffer, 0, count);

// clean up
fos.close();
in.close();
}
}

public static void zip(File[] infiles, JarOutputStream jos) throws Exception
{
zip(infiles,"",jos);

// clean up
jos.flush();
jos.close();
}

public static void zip(File[] infiles, String basefolder, JarOutputStream jos) throws Exception
{
FileInputStream fis = null;
for(int i=0; i<infiles.length; i++)
{
if(infiles[i].isDirectory())
{
// recursive call for directories
zip(infiles[i].listFiles(), infiles[i].getName() + File.separator, jos);
continue;
}

String filepath = basefolder + infiles[i].getName();
JarEntry entry = new JarEntry(filepath);
jos.putNextEntry(entry);

fis = new FileInputStream(infiles[i]); // get stream

int count;
while((count = fis.read(buffer, 0, buffer.length)) != -1)
jos.write(buffer, 0, count);
}
}
}

最佳答案

在不调试代码的情况下,我可以说最可能的原因是压缩级别。默认压缩级别是Deflater.DEFAULT_COMPRESSION。您可以使用 ZipOutputStream.setLevel() 更改它。

我相信您是使用 jar 实用程序或其他 zip 创建器创建了原始 jar 文件。然后,您使用代码创建了相同的内容并获得了不同的大小。在这种情况下,压缩级别可以解释这种差异。

关于java - 压缩和解压 jar ,大小不一样!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4705280/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com