簡體   English   中英

如何從Http-Request的Raw-Data創建Zip-File?

[英]How to create Zip-File from Raw-Data from Http-Request?

我試圖從Raw-String創建一個Zip文件(比如當你用編輯器打開一個Zip文件時)我從API中獲取。 我嘗試過使用Java 8中的Zip-API,但是我收到了“java.util.zip.ZipException:太多的長度或距離符號”-Error。

        ByteArrayInputStream bis = new ByteArrayInputStream(s.getBytes());
        ZipInputStream zis = new ZipInputStream(bis);

        FileOutputStream fos = new FileOutputStream("C:\\Users\\Desktop\\ArchiveTest.zip");
        BufferedOutputStream bos = new BufferedOutputStream(fos);
        ZipOutputStream zos = new ZipOutputStream(bos);

        ZipEntry currentEntry;
        byte[] buffer = new byte[8192];
        while ((currentEntry = zis.getNextEntry()) != null) {
            ZipEntry newEntry = new ZipEntry(currentEntry.getName());
            zos.putNextEntry(newEntry);
            int length;
            while ((length = zis.read(buffer)) > 0) {
                zos.write(buffer, 0, length);
            }
            zos.closeEntry();                   
        }

        zos.close();

我的猜測是Java無法處理未知字符並更改它們,但我怎樣才能改變這種行為?

謝謝你的回復!

要從String獲取字節,應該(始終)指定編碼,例如String s = "äüö"; byte[] bytes = s.getBytes("UTF-8"); String s = "äüö"; byte[] bytes = s.getBytes("UTF-8"); 甚至更好...; byte[] bytes = s.getBytes(StandardCharsets.UTF_8); ...; byte[] bytes = s.getBytes(StandardCharsets.UTF_8);

在這里你應該使用以下(如果網站charset是“UTF-8”):

InputStream bis = new java.io.ByteArrayInputStream(s.getBytes(StandardCharsets.UTF_8));
...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM