通过NanoHTTP动态创建,加密和流式传输ZIP到客户端

时间:2016-10-10 15:32:15

标签: java android zip nanohttpd

我尝试通过NanoHTTPD

创建一个zip文件

这就是我现在所拥有的:

    @Override
    public Response serve(IHTTPSession session) {
        String uri = session.getUri();
        if (uri.toString().equals("/test.zip")) {
            try {
                PipedOutputStream outPipe = new PipedOutputStream();
                ZipEncryptOutputStream zeos = new ZipEncryptOutputStream(outPipe, "Foo");
                ZipOutputStream zos = new ZipOutputStream(zeos);

                File file = new File("Test.txt");
                PipedInputStream inPipe = new PipedInputStream(outPipe, 2048);

                ZipEntry ze = new ZipEntry("Test.txt");
                zos.putNextEntry(ze);

                FileInputStream fis = new FileInputStream(file);
                IOUtils.copy(fis, zos);
                fis.close();
                zos.closeEntry();
                zos.close();

                return newChunkedResponse(Response.Status.OK, "application/zip", inPipe);

但是当调试时 - 当然 - 需要一些时间,因为所有内容都先保存到ZIP文件中。

我想我必须以某种方式在回调中以及在病房关闭条目和流之后写入zos?但是怎么样?

这是一种有效的方式吗(我的目标是Android)?创建临时文件会更容易 - 但它应该适用于低端智能手机,并且下载时创建zip文件(大约40 MB)的初始等待时间应该很短。

0 个答案:

没有答案