gpt4 book ai didi

java - ZipInputStream getNextEntry 在提取 .zip 文件时为空

转载 作者:行者123 更新时间:2023-12-04 17:12:13 28 4
gpt4 key购买 nike

我正在尝试提取 .zip 文件,并且正在使用以下代码:

String zipFile = Path + FileName;

FileInputStream fin = new FileInputStream(zipFile);
ZipInputStream zin = new ZipInputStream(fin);

ZipEntry ze = null;
while ((ze = zin.getNextEntry()) != null) {
UnzipCounter++;
if (ze.isDirectory()) {
dirChecker(ze.getName());
} else {
FileOutputStream fout = new FileOutputStream(Path
+ ze.getName());
while ((Unziplength = zin.read(Unzipbuffer)) > 0) {
fout.write(Unzipbuffer, 0, Unziplength);
}
zin.closeEntry();
fout.close();

}
}
zin.close();

但问题是,在调试时,当代码到达 while(!=null) 部分时, zin.getNextEntry() 始终为 null,因此它不会提取任何内容..
.zip 文件是 150kb .. 我该如何解决这个问题?

.zip 存在

我用来 dl .zip 的代码:
URL=intent.getStringExtra("DownloadService_URL");
FileName=intent.getStringExtra("DownloadService_FILENAME");
Path=intent.getStringExtra("DownloadService_PATH");
File PathChecker = new File(Path);
try{

if(!PathChecker.isDirectory())
PathChecker.mkdirs();

URL url = new URL(URL);
URLConnection conexion = url.openConnection();

conexion.connect();
int lenghtOfFile = conexion.getContentLength();
lenghtOfFile/=100;

InputStream input = new BufferedInputStream(url.openStream());
OutputStream output = new FileOutputStream(Path+FileName);

byte data[] = new byte[1024];
long total = 0;

int count = 0;
while ((count = input.read(data)) != -1) {
output.write(data, 0, count);
total += count;

notification.setLatestEventInfo(context, contentTitle, "جاري تحميل ملف " + FileName + " " + (total/lenghtOfFile), contentIntent);
mNotificationManager.notify(1, notification);
}


output.flush();
output.close();
input.close();

最佳答案

在使用 ZipInputStream 读取 zip 文件时,您可能会遇到以下问题: Zip 文件包含序列中的条目和附加结构信息。此外,它们在文件的最后 (!) 包含所有条目的注册表。只有此注册表才提供有关正确 zip 文件结构的完整信息。因此,通过使用流按顺序读取 zip 文件有时会导致“猜测”,这可能会失败。这是所有 zip 实现的常见问题,不仅仅是 java.util.zip。更好的方法是使用 ZipFile,它从文件末尾的注册表中确定结构。您可能想阅读 http://commons.apache.org/compress/zip.html ,它讲述了更多的细节。

关于java - ZipInputStream getNextEntry 在提取 .zip 文件时为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7561031/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com