Почему ZipInputStream не может прочитать вывод ZipOutputStream?

Я ' m застрял с этим тестом junit:

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 , поскольку ожидается.

Что я здесь делаю не так? Что мне нужно изменить, чтобы восстановить содержимое «файла»? Я думаю, мне сначала нужно знать длину, чтобы иметь возможность читать данные из потока?

6
задан tangens 12 November 2010 в 21:49
поделиться