2012-05-02 4 views
1

Androidでzipを圧縮しようとしていますが、動作しません。それはサイズが3KBのzipフォルダを作成しますが、それだけです。私は何を間違っているのですか?Androidで圧縮できない

public static void compress(String infile, String outfile){ 
    try { 
     BufferedInputStream origin = null; 
     FileOutputStream dest = new FileOutputStream(outfile); 
     ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(dest)); 
     byte data[] = new byte[BUFFER]; 
     File f = new File(infile); 
     Log.d(TAG, "Only one file found"); 
     FileInputStream fi = new FileInputStream(f); 
     Log.d(TAG, "File Input Stream available " + fi.available()); 
     origin = new BufferedInputStream(fi, BUFFER); 
     ZipEntry entry = new ZipEntry(infile); 
     int count; 
     out.putNextEntry(entry); 
     while((count = origin.read(data, 0, BUFFER)) != -1) { 
       out.write(data, 0, count); 
      } 
     origin.close(); 


     out.close(); 
     } catch(Exception e) { 
     e.printStackTrace(); 
     } 

} 

そして、私の呼び出し元の関数は、念のために、私はcloseEntryを追加したいこの

String outFile="/sdcard/CPTA/test.zip"; 
String inFile="/sdcard/CPTA/iso_3166-1_list_en.xml"; 
ZipUtility.compress(inFile, outFile); 
+0

コードは正常です。 3KBの出力が間違っていますか? 'unzip -l/sdcard/CPTA/test.zip'を実行し、ファイルがそこにあるかどうか確認してください。 –

+0

私はWindows ZIPシステムとそれが空の組み込みでそれを開いた。 – minhaz

+0

空のzipファイルは3KBよりはるかに小さくする必要があります。そのファイルにはほかに何が入っていますか? –

答えて

1

のようなものです。

 out.putNextEntry(entry); 
    while((count = origin.read(data, 0, BUFFER)) != -1) { 
      out.write(data, 0, count); 
     } 
    origin.close(); 
    out.closeEntry(); 
+0

これを試しても、まだ動作していません。 – minhaz