Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
还是个问题吗java.util.zip.ZipException:未找到中心目录项_Java_Android_Encoding_Archive - Fatal编程技术网

还是个问题吗java.util.zip.ZipException:未找到中心目录项

还是个问题吗java.util.zip.ZipException:未找到中心目录项,java,android,encoding,archive,Java,Android,Encoding,Archive,作为免责声明,我已经看到了帖子和链接到它的帖子 我有一个托管在服务器上的文件,它是一个已存档的文件,我正在尝试使用方法将其取消存档。当文件预下载到设备上,我在应用程序中打开并取消归档时,通过下载的中的意图过滤器,没有任何问题。但是,当我从应用程序中的服务器下载它,然后尝试解压缩它时,我在这一行的标题中得到错误: ZipFile zipfile = new ZipFile(archive); 其中archive是指向我下载的存档文件的文件。我用来下载归档文件的代码如下: String u

作为免责声明,我已经看到了帖子和链接到它的帖子

我有一个托管在服务器上的文件,它是一个已存档的文件,我正在尝试使用方法将其取消存档。当文件预下载到设备上,我在应用程序中打开并取消归档时,通过
下载的
中的
意图过滤器
,没有任何问题。但是,当我从应用程序中的服务器下载它,然后尝试解压缩它时,我在这一行的标题中得到错误:

ZipFile zipfile = new ZipFile(archive);
其中
archive
是指向我下载的存档文件的
文件。我用来下载归档文件的代码如下:

    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();
我最近根据我在顶部引用的帖子添加了编码类型,但是我仍然得到相同的错误。任何帮助都会很好

我想澄清一下:

  • 我有一个档案
  • 当文件从外部下载并在我的应用程序中打开/未归档时,可以取消归档
  • 当我下载归档文件并尝试取消归档时,收到错误
    java.util.zip.ZipException:centraldirectory Entry not found

我最好的猜测是,这是我下载的一个问题。但是,尽管如此,我不知道我做错了什么。

您没有正确复制下载内容。你必须使用

output.write(data, 0, count);

否则,您将向文件中写入任意垃圾邮件。

您没有正确复制下载内容。你必须使用

output.write(data, 0, count);

否则,您将在文件中写入任意垃圾。

真的吗?文档说
write(buffer)
相当于write(buffer,0,buffer.length)。
@RileyE当然是,但两者都不等同于我发布的代码。你需要去阅读read()的文档。哦,对了。我注意到它没有读取完整的字节大小。我不知道我怎么没听到。说得好。谢谢你,好先生!真正地文档说
write(buffer)
相当于write(buffer,0,buffer.length)。
@RileyE当然是,但两者都不等同于我发布的代码。你需要去阅读read()的文档。哦,对了。我注意到它没有读取完整的字节大小。我不知道我怎么没听到。说得好。谢谢你,好先生!