Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.util.zip.ZipInputStream在解压过程中部分为空_Java_Android_Zip - Fatal编程技术网

java.util.zip.ZipInputStream在解压过程中部分为空

java.util.zip.ZipInputStream在解压过程中部分为空,java,android,zip,Java,Android,Zip,已从生产服务器提供的web响应中检索到的压缩xml字符串。 字符串是好的,因为.net中的相同方法给出了有效的结果。(数据是汽车品牌的列表。) 然而,在Android中,ZipInputStream读取产生一个大小合适的缓冲区(4895),但从2661位置开始,它有空数据。最后一辆正确解压的汽车是“MG” 该方法不会出错 有人能看出哪里出了问题吗? 谢谢 查看从read方法读取的字节数会很有趣。事实上,我会看所有的尺寸,以确保没有愚蠢。要明确zipBytes.length,entrySize和i

已从生产服务器提供的web响应中检索到的压缩xml字符串。 字符串是好的,因为.net中的相同方法给出了有效的结果。(数据是汽车品牌的列表。) 然而,在Android中,ZipInputStream读取产生一个大小合适的缓冲区(4895),但从2661位置开始,它有空数据。最后一辆正确解压的汽车是“MG”

该方法不会出错

有人能看出哪里出了问题吗? 谢谢


查看从read方法读取的字节数会很有趣。事实上,我会看所有的尺寸,以确保没有愚蠢。要明确
zipBytes.length
entrySize
int-bytesRead=zin.read(zipData,0,entrySize)你好,Gary,使用缓冲方法解决了问题。
private byte[] decompressZip(String zipText) throws IOException{


    try {
        byte[] zipBytes = MakeBytes(zipText);
        byte[] zipData;
        ByteArrayInputStream b = new ByteArrayInputStream(zipBytes);
        BufferedInputStream buf = new BufferedInputStream(b);

        //ZipInputStream zin = new ZipInputStream(b); doesn't matter both constuctors have the fault.
        ZipInputStream zin = new ZipInputStream(buf);
        ZipEntry entry;
        if((entry=zin.getNextEntry())!=null)
        {
            int entrySize=(int)entry.getSize();
            zipData = new byte[entrySize];
            zin.read(zipData, 0, entrySize);

            return zipData;

        }
    } catch (Exception e) {
        // TODO Auto-generated catch block
        String sError = e.getMessage();
    }
    return null;
}