我被这个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() );
}
我正在使用ZipOutputStream写入文件名为“file”的文件,文件内容为3个字节。然后我尝试使用ZipInputStream读取创建的数据,但是最后一个assert失败了,因为
entry.getSize()
是-1
而不是预期的3
。这里我做错了什么?我需要改变什么来恢复“file”的内容?我认为,首先我必须知道长度才能从流中读取数据。