ZipEntry.getCompressedSize() 为-1 怎么修复
时间: 2024-04-15 15:31:53 浏览: 86
对于 ZipEntry.getCompressedSize() 方法返回 -1 的情况,通常表示此 ZipEntry 对应的文件尚未压缩或无法确定其压缩大小。如果你希望获取准确的压缩,可以尝试以下几种方法修复:
1. 确保文件已经被压缩:首先要确认你要获取压缩大小的文件确实已经被压缩了。你可以使用其他工具(如 WinRAR、7-Zip 等)来验证文件是否已经被正确地压缩。
2. 使用 ZipFile 类代替 ZipInputStream:如果你是通过 ZipInputStream 读取 ZIP 文件中的条目,可以尝试使用 ZipFile 类代替。ZipFile 类提供了更方便的 API 来获取压缩大小,例如:
```java
ZipFile zipFile = new ZipFile("your_zip_file.zip");
ZipEntry entry = zipFile.getEntry("your_entry_name");
long compressedSize = entry.getCompressedSize();
```
3. 使用其他方法来获取压缩大小:如果以上方法都无法解决问题,你可以尝试使用其他方法来获取压缩大小,例如通过文件系统 API 获取文件的大小,然后与 ZIP 文件中的条目进行对比。示例代码如下:
```java
File file = new File("your_zip_file.zip");
long entrySize = -1;
try (ZipInputStream zis = new ZipInputStream(new FileInputStream(file))) {
ZipEntry entry;
while ((entry = zis.getNextEntry()) != null) {
if (entry.getName().equals("your_entry_name")) {
entrySize = entry.getSize();
break;
}
}
} catch (IOException e) {
e.printStackTrace();
}
// entrySize 即为压缩文件的大小
```
请注意,以上方法仅供参考,具体修复方法取决于你的使用场景和代码实现。
阅读全文