Zip文件的输出为空

时间:2014-04-22 19:21:21

标签: java sockets zipfile

我正在使用Java中的HTTP服务器,为了测试目的,它在Windows 8.1下运行。

它的编码方式使得当设置某个参数时,它会改变HTTP文件的标题,并通过套接字发送文件,类似于:

socket.outputStream.write(filter.read());

假设通信工作正常,因为我已经使用各种其他过滤器对其进行了测试,并且它运行良好。

其中一个过滤器应该抓取HTML文件,压缩然后将其发送到客户端,而无需在服务器计算机中创建文件。这是标题:

"HTTP/1.1 200 OK\nContent-Type: application/zip\nContent-Disposition: filename=\"" + request + ".zip\"\n";

之后,我将我的过滤器设置为我创建的类(在下面复制)并发送文件。我的问题是,即使服务器最终发送数据,客户端也只下载一个空的zip文件,里面没有任何内容。

我已经坚持这个问题几天了,我似乎无法弄清楚出了什么问题。我认为创建条目或者关闭输出的方式有问题。我不能确定。

我真的很感激在这个问题上给我的任何建议。谢谢你的关注。

class ZipFilterInputStream extends FilterInputStream
{

    protected ZipFilterInputStream(InputStream inputToFilter) throws IOException
    {
        super(inputToFilter);

        //Get the stuff ready for compression
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        ZipOutputStream zout = new ZipOutputStream(out);
        zout.putNextEntry(new ZipEntry("file.html"));

        //Compress the stream
        int data = in.read();
        while (data != -1)
        {
            zout.write(data);
            data = in.read();
        }
        zout.closeEntry();
        zout.finish();

        //Get the stream ready for reading.
        in = new ByteArrayInputStream(out.toByteArray());
        out.close();
    }

    public int read() throws IOException
    {
        return in.read();
    }

}    

0 个答案:

没有答案