2016-12-09 13 views
1

私はいくつかの画像が格納されたディレクトリを作成しました。私は、次のソースからこのコードを取得しAndroid zip構造

private static void zipDir(String zipFileName, String dir) throws Exception { 
    File dirObj = new File(dir); 
    ZipOutputStream out = new ZipOutputStream(newFileOutputStream(zipFileName)); 
    addDir(dirObj, out); 
    out.close(); 
} 

static void addDir(File dirObj, ZipOutputStream out) throws IOException { 
    File[] files = dirObj.listFiles(); 
    byte[] tmpBuf = new byte[1024]; 

    for (int i = 0; i < files.length; i++) { 
     if (files[i].isDirectory()) { 
     addDir(files[i], out); 
     continue; 
    } 
    FileInputStream in = new FileInputStream(files[i].getAbsolutePath()); 
    System.out.println(" Adding: " + files[i].getAbsolutePath()); 
    out.putNextEntry(new ZipEntry(files[i].getAbsolutePath())); 
    int len; 
    while ((len = in.read(tmpBuf)) > 0) { 
     out.write(tmpBuf, 0, len); 
    } 
    out.closeEntry(); 
    in.close(); 
} 

}

http://www.java2s.com/Code/Java/File-Input-Output/Makingazipfileofdirectoryincludingitssubdirectoriesrecursively.htm

しかし代わりにのみ追加する今、単一の.zipファイルとしてそれを圧縮するために、私は、次のコードを使用しましたzipファイルの画像は、すべての親ディレクトリも追加します。 たとえば、すべての画像をabc.zip内に入れる代わりに、すべてのファイルが次のパスに作成されます。Intruder_Pictures.zip \ storage \ emulated \ 0 \ Pictures \ ABC Pictures \

可能な方法はありますかちょうどジッパーの内側に写真があります。

ご協力いただければ幸いです。 よろしくお願いします。

答えて

1

パスではなくファイル名でZipEntryをインスタンス化してください。

out.putNextEntry(new ZipEntry(files[i].getName())); 
+0

ありがとうございました。できます。 –

関連する問題