Ich bin fest mit diesem JUnit-Test:Warum kann ZipInputStream die Ausgabe von ZipOutputStream nicht lesen?
public void test() throws Exception {
ByteArrayOutputStream out = new ByteArrayOutputStream();
ZipOutputStream zipOut = new ZipOutputStream(out);
zipOut.putNextEntry(new ZipEntry("file"));
zipOut.write((new byte[] { 0x01, 0x02, 0x03 }));
zipOut.closeEntry();
zipOut.close();
ZipInputStream zipIn = new ZipInputStream(new ByteArrayInputStream(out.toByteArray()));
ZipEntry entry = zipIn.getNextEntry();
assertNotNull(entry);
assertEquals("file", entry.getName());
assertEquals(3, entry.getSize());
}
ich eine Datei mit dem Namen „Datei“ und ein Gehalt von drei Bytes zu einem ZipOutputStream zu schreiben. Dann versuche ich, die erstellten Daten mit einem ZipInputStream zu lesen, aber die letzte Assert schlägt fehl, weil entry.getSize()
-1
und nicht 3
ist, wie erwartet.
Was mache ich hier falsch? Was muss ich ändern, um den Inhalt von "Datei" wiederherzustellen? Ich denke, ich muss zuerst die Länge kennen, um die Daten aus dem Stream lesen zu können?
Ihr Code versucht - in der Tat es nicht funktioniert. Ich bin verwirrt. Untersuchung .. –
Got it. Antwort unten. –