繁体   English   中英

.zip文件上传Spring

[英].zip file upload Spring

我有一个分段文件上传请求。 该文件是zip文件-.zip格式。 如何解压缩该文件? 我需要使用每个条目的文件路径和文件内容填充Hashmap。

HashMap<filepath, filecontent>

我到目前为止的代码:

 FileInputStream fis = new FileInputStream(zipName);
 ZipInputStream zis = new ZipInputStream(
                new BufferedInputStream(fis));
 ZipEntry entry;

 while ((entry = zis.getNextEntry()) != null) {
            int size;
            byte[] buffer = new byte[2048];

            FileOutputStream fos =
                    new FileOutputStream(entry.getName());
            BufferedOutputStream bos =
                    new BufferedOutputStream(fos, buffer.length);

            while ((size = zis.read(buffer, 0, buffer.length)) != -1) {
                bos.write(buffer, 0, size);
            }
            bos.flush();
            bos.close();
        }

        zis.close();
        fis.close();
    } 

代替使用FileOutputStream,使用ByteArrayOutputStream捕获输出。 然后,在BAOS上执行“关闭”操作之前,请在其上使用“ toByteArray()”方法以将内容作为字节数组获取(或使用“ toString()”)。 因此,您的代码应如下所示:

public static HashMap<String, byte[]> test(String zipName) throws Exception {
    HashMap<String, byte[]> returnValue = new HashMap<>();
    FileInputStream fis = new FileInputStream(zipName);
    ZipInputStream zis = new ZipInputStream(
            new BufferedInputStream(fis));
    ZipEntry entry;

    while ((entry = zis.getNextEntry()) != null) {

        int size;
        byte[] buffer = new byte[2048];

        ByteArrayOutputStream baos =
                new ByteArrayOutputStream();
        BufferedOutputStream bos =
                new BufferedOutputStream(baos, buffer.length);

        while ((size = zis.read(buffer, 0, buffer.length)) != -1) {
            bos.write(buffer, 0, size);
        }
        bos.flush();
        bos.close();
        returnValue.put(entry.getName(),baos.toByteArray());
    }

    zis.close();
    fis.close();
    return returnValue;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM