1
作为免责声明,我已经看到this帖子和链接到它的帖子。仍然是问题? - java.util.zip.ZipException:找不到中央目录条目
我有一个文件托管在一个服务器上,这是一个归档文件,我试图用this方法解压它。当文件被预先下载到设备上时,我打开并在我的应用程序中取消存档,通过Downloads
的intent-filter
,没有任何问题。然而,当我从我的应用程序中的服务器下载它,然后尝试将它解压缩,我得到的标题错误在这条线:
ZipFile zipfile = new ZipFile(archive);
凡archive
是File
指向存档文件我下载。我使用它来下载档案的代码如下:
String urlPath = parameters[0], localPath = parameters[1];
try
{
URL url = new URL(urlPath);
URLConnection connection = url.openConnection();
connection.addRequestProperty("Accept-Encoding", "gzip");
connection.connect();
int fileLength = connection.getContentLength();
InputStream input = new BufferedInputStream(url.openStream());
OutputStream output = new BufferedOutputStream(new FileOutputStream(localPath));
byte data[] = new byte[1024];
long total = 0;
int count;
while((count = input.read(data)) != -1)
{
total += count;
publishProgress((int)total * 100/fileLength);
output.write(data);
}
output.flush();
output.close();
input.close();
我最近添加了编码类型,每个我在上面提到的职位,但我仍然得到同样的错误。任何帮助都会很棒。
只是为了澄清:
- 我有一个存档文件
- 当文件被外部下载和打开/未归档我的应用程序
- 里面当我下载档案,然后将其解档细试图unarchive它,我收到错误
java.util.zip.ZipException: Central Directory Entry not found
我最好的猜测是,这是一个问题,米y下载。然而,这就是说,我不知道我做错了什么。
真的吗?该文档说'写(缓冲区)'是'相当于写(缓冲区,0,buffer.length).' – RileyE
@RileyE当然它是,但都不等于我发布的代码。你需要去阅读read()的文档。 – EJP
哦对。我注意到它没有读完整字节的大小。我不知道我怎么没有听到。好点子。谢谢你,先生! – RileyE