[英]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.