免責事項として、私はすでにこの投稿とそれにリンクしている投稿を見てきました。
アーカイブされたファイルであるサーバーでホストされているファイルがあり、この方法を使用してアーカイブを解除しようとしています。ファイルがデバイスに事前にダウンロードされていて、アプリケーションでそれを開いて解凍すると、intent-filter
fromを介してDownloads
問題はありません。ただし、アプリケーション内のサーバーからダウンロードして解凍しようとすると、次の行のタイトルにエラーが表示されます。
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();
一番上で参照した投稿に従って、最近エンコーディングタイプを追加しましたが、それでも同じエラーが発生します。どんな助けでも素晴らしいでしょう。
明確にするために:
- アーカイブファイルがあります
- ファイルが外部からダウンロードされ、アプリ内で開かれたりアーカイブ解除されたりすると、正常にアーカイブ解除されます
- アーカイブをダウンロードして解凍しようとすると、エラーが表示されます
java.util.zip.ZipException: Central Directory Entry not found
私の推測では、これは私のダウンロードに問題があるということです。しかし、そうは言っても、私は自分が間違っていることを知りません。