Я застрял с этим тестом джунта:
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() );
}
Я пишу файл с именем «file» и содержимым трех байтов в ZipOutputStream. Затем я пытаюсь прочитать созданные данные с помощью ZipInputStream, но последнее утверждение не удается, потому что entry.getSize()
равно -1
, а не 3
, как и ожидалось.
Что я здесь не так делаю? Что мне нужно изменить, чтобы восстановить содержимое «файла»? Я думаю, я сначала должен знать длину, чтобы иметь возможность читать данные из потока?