gpt4 book ai didi

Java zlib解压报错 "unknown compression method"

转载 作者:行者123 更新时间:2023-11-29 05:52:39 24 4
gpt4 key购买 nike

我在读高中,需要完成我的 AP 计算机编程类(class)的一个项目。基本上,我的老师在 java 中复习了 zlib 解压缩和压缩,并告诉我们制作一个小的 java 程序来解压缩一些压缩数据。我想补充一点,我是一个 minecraft 迷,发现 minecraft 中的 block 在 zlib 中被压缩,所以我开始解压缩这些 block 。无论如何,代码无法正常工作,我必须在星期二之前完成。我犯了什么错误?所有帮助将不胜感激。代码:

public static void read(String filein) throws IOException, DataFormatException{
//Initialize
ArrayList<Byte> bufflist = new ArrayList<Byte>();
File file = new File(filein);
RandomAccessFile mcr = new RandomAccessFile(file, "r");
RandomAccessFile cache = new RandomAccessFile("cache", "rw");
RandomAccessFile out = new RandomAccessFile("out", "rw");

//read file
int dataread = 0;
mcr.seek(8192);
while (dataread < file.length() - 8192){
dataread = dataread + 1;
byte b = mcr.readByte();
bufflist.add(b);
}
mcr.close();
//decode
for (int y=0; y<bufflist.size()-1; y++){
cache.write(bufflist.get(y));
}
InflaterInputStream infl = new InflaterInputStream(new FileInputStream("cache"), new Inflater());
int data = infl.read();
out.write(data);
}
public static void main(String[] args) throws IOException, DataFormatException
{
read("r.1.1.mca");
}

最佳答案

请注意:虽然有许多工具使用 zlib 进行(解)压缩,但结果以多种不同(专有)文件格式存储。 - 您需要知道压缩数据的存储格式才能解压缩,即使压缩算法匹配也是如此。

那么,您确定在输入文件的偏移量 8192 处跟随的数据流完全符合 zlib 期望的格式吗? - 我不认为它是专有文件格式。使用普通的 zlib 你甚至不能解压一个普通的 PKZIP (".zip") 文件。不要在这上面浪费你的时间,而是找一些其他的数据来玩。

您可能想先尝试通过 zlib 压缩一些已知数据,将其存储到文件或其他任何地方,然后根据需要查看它。然后,将该压缩数据文件交给 zlib,看看是否可以将其解压缩为原始格式。如果你能做到这一点,你就已经了解了很多关于如何使用 zlib 的知识。

对于其他任务,例如处理那些“.zip”文件,您可能需要查看 java.util.zip 中的 Java API。包。

哦,顺便说一下:“未知压缩方法” 结果可能有点误导。这仅仅表示 zlib 无法确定如何解压缩给定数据,这通常是由“损坏的”输入引起的,至少在给定的形式中,zlib 首先无法处理这些输入。

关于您的代码:

确保在尝试写入之前删除输出文件;以您的方式写入现有文件会将数据附加到文件的现有数据,而不是替换旧字节。

你真的应该close()你的“缓存”文件,然后再尝试通过新的 InputStream 读取它.

在你的for循环 y<bufflist.size()-1实际上应该是 y<bufflist.size() .

您可以节省所有这些 bufflist东西:只需替换 bufflist.add(b);cache.write(b); .

关于Java zlib解压报错 "unknown compression method",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13333396/

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