3

プログラムで .xml.gz ファイルを解凍しようとしています。.gz ファイルを解凍する方法を示す多くの例がインターネット上で入手できるため、すべて非常に簡単に思えます。ただし、実行しようとするたびに例外が発生します: java.io.IOException: unknown format (マジック ナンバー d4d4)。

Android アプリでこれを実行しようとしていますが、Java で行う方法とは異なる方法で行う必要がありますか?

ここで入手できるこのサンプルコードに従っています。

ここで私が間違っていることを知っている人はいますか?また、Web サーバーからファイルをダウンロードした後、ファイルを解凍しています。ダウンロードはうまくいったようです。

4

3 に答える 3

7

同時に解凍をダウンロードする良い方法を見つけました。それはそよ風のように機能します。

protected String doInBackground(String... sUrl) {
    try {
        URL url = new URL(sUrl[0]);
        URLConnection connection = url.openConnection();
        InputStream stream = connection.getInputStream();
        stream = new GZIPInputStream(stream);
        InputSource is = new InputSource(stream);
        InputStream input = new BufferedInputStream(is.getByteStream());
        OutputStream output = new FileOutputStream("Path to the file");
        byte data[] = new byte[2097152];
        long total = 0;
        int count;

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

        output.flush();
        output.close();
        input.close();
    } catch (BufferOverflowException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
        return null;
    }
}

参考:http ://abhirampal.com/2012/05/17/android-download-decompress-gzip/

于 2012-05-17T10:24:03.413 に答える
1

.xml.gz ファイルの最初の 10 バイトは? デコンプレッサは、最初の 2 バイトが d4 d4 であることを伝えようとしているようです。.gz ファイルは 1f 8b で始まる必要があります。

于 2012-05-07T01:37:49.173 に答える