2012-02-10 10 views
0

私は、サービスAがサービスBに圧縮データを提供するアプリケーションを持っています。サービスBは解凍する必要があります。ファイルの内容の解凍

サービスAは公開メソッドgetStreamを持ち、出力としてByteArrayInputStreamを与え、データinitはデータを圧縮します。

ただし、GzipInputStreamに渡すと、Not in Gzip形式の例外が返されます。

InputStream ins = method.getInputStream(); 
GZIPInputStream gis = new GZIPInputStream(ins); 

これは例外です。ファイルがサービスAにダンプされると、データは圧縮されます。 getInputStreamは圧縮されたデータを返します。

これを処理する方法は、GzipInputStreamに渡しますか?

よろしく
Dheeraj女子

答えて

1

それはzip形式ならば、あなたはZipInputstreamを使用する必要があります。

1

"zip"形式に依存します。 zip名(zip、gzip、bzip2、lzip)を持つ複数のフォーマットがあり、異なるフォーマットでは異なるパーサーが必要です。
http://en.wikipedia.org/wiki/List_of_archive_formats
http://www.codeguru.com/java/tij/tij0115.shtml
http://docstore.mik.ua/orelly/java-ent/jnut/ch25_01.htm

あなたは、このコードを試し、その後ジップを使用している場合:

public void doUnzip(InputStream is, String destinationDirectory) throws IOException { 
    int BUFFER = 2048; 

    // make destination folder 
    File unzipDestinationDirectory = new File(destinationDirectory); 
    unzipDestinationDirectory.mkdir(); 

    ZipInputStream zis = new ZipInputStream(is); 

    // Process each entry 
    for (ZipEntry entry = zis.getNextEntry(); entry != null; entry = zis 
      .getNextEntry()) { 

     File destFile = new File(unzipDestinationDirectory, entry.getName()); 

     // create the parent directory structure if needed 
     destFile.getParentFile().mkdirs(); 

     try { 
      // extract file if not a directory 
      if (!entry.isDirectory()) { 
       // establish buffer for writing file 
       byte data[] = new byte[BUFFER]; 

       // write the current file to disk 
       FileOutputStream fos = new FileOutputStream(destFile); 
       BufferedOutputStream dest = new BufferedOutputStream(fos, 
         BUFFER); 

       // read and write until last byte is encountered 
       for (int bytesRead; (bytesRead = zis.read(data, 0, BUFFER)) != -1;) { 
        dest.write(data, 0, bytesRead); 
       } 
       dest.flush(); 
       dest.close(); 
      } 
     } catch (IOException ioe) { 
      ioe.printStackTrace(); 
     } 
    } 
    is.close(); 
} 

public static void main(String[] args) { 
    UnzipInputStream unzip = new UnzipInputStream(); 
    try { 
     InputStream fis = new FileInputStream(new File("test.zip")); 
     unzip.doUnzip(fis, "output"); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 
+0

ファイルの内容がGZipOutputStream –

+0

を使用してzip形式で圧縮されたあなたは、ファイルが壊れていませんか?ファイルをローカルに保存し、外部アプリケーションを使用して解凍できるかどうか確認してください。可能であれば、それはコード内の問題です。そうでない場合は、ファイルが破損しているか、別の形式です –

関連する問題