我坚持这个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() );
}
Run Code Online (Sandbox Code Playgroud)
我正在写一个名为"file"的文件和一个ZipOutputStream的三个字节的内容.然后我尝试用ZipInputStream读取创建的数据,但最后一个断言失败,因为entry.getSize()是-1和否3,正如预期的那样.
我在这做错了什么?我需要更改什么才能恢复"文件"的内容?我想,我首先要知道能够从流中读取数据的长度吗?
您实际上必须读取条目的内容,然后entry.getSize()才会返回正确的大小。
要阅读条目,请使用:
byte[] buf = new byte[1024];
int len;
while ((len = zipIn.read(buf)) > 0) {
// use data;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5245 次 |
| 最近记录: |