Java 解压文件的格式不准确

Java 解压文件的格式不准确,java,unzip,zipinputstream,Java,Unzip,Zipinputstream,我想解压所有文件夹和不同类型的文件,如.xls、.apk、.png等。但解压时,所有文件都在新解压的文件夹(或该文件夹下的文件夹)中。但是那些.xml、.png、.apk文件的格式不正确。当我打开xls文件时,它会显示一个格式可能不同的弹出窗口,并且当它打开该文件时,所有内容的格式都不同。png文件也无法打开,解压后.apk也不可用。为什么会这样?? ** **您忘记将读取的第一个字节放入目标文件: int k= zipIs.read(tmp); // <-

我想解压所有文件夹和不同类型的文件,如.xls、.apk、.png等。但解压时,所有文件都在新解压的文件夹(或该文件夹下的文件夹)中。但是那些.xml、.png、.apk文件的格式不正确。当我打开xls文件时,它会显示一个格式可能不同的弹出窗口,并且当它打开该文件时,所有内容的格式都不同。png文件也无法打开,解压后.apk也不可用。为什么会这样?? **


**

您忘记将读取的第一个字节放入目标文件:

                int k= zipIs.read(tmp); // <--- HERE
                System.out.println(k+1);
                while((size = zipIs.read(tmp)) != -1){
                    out.write(tmp, 0 , size);

intk=zipIs.read(tmp);//“我想解压所有文件夹”这意味着压缩文件包含许多文件夹,这些文件夹包含不同类型的文件。我认为解压后的文件有不同的格式/unicode@fge你能详细说明一下吗。我是java新手,我无法理解你的评论,请解释一下更广泛的含义。int k=zipIs.read(tmp);我曾经检查过这个函数返回什么。我不认为这行是有任何意义,在这段代码,如果我删除这两行比它是工作良好的png文件。但对于其他文件(如文本文件和其他文件)仍然存在问题,解压缩文件的大小比原始文件小3.4KB。假设一个文本文件为10KB,压缩格式为6KB,但解压后其大小为9KB,而不是10KB。
                int k= zipIs.read(tmp); // <--- HERE
                System.out.println(k+1);
                while((size = zipIs.read(tmp)) != -1){
                    out.write(tmp, 0 , size);