私のマシンで次のファイル構造を圧縮しようとしていますが、
parent/
parent/test1
parent/test1/image1.jpeg
parent/test2
ここでの問題は、Java を使用して上記のファイル構造を圧縮できないことです。私はグーグルを持っていて、次のコードサンプルを見つけましたが、特定のフォルダー内でのみファイルを圧縮するだけです。
File inFolder=new File("out");
File outFolder=new File("Out.zip");
ZipOutputStream out = new ZipOutputStream(new
BufferedOutputStream(new FileOutputStream(outFolder)));
BufferedInputStream in = null;
byte[] data = new byte[1000];
String files[] = inFolder.list();
for (int i=0; i<files.length; i++)
{
in = new BufferedInputStream(new FileInputStream
(inFolder.getPath() + "/" + files[i]), 1000);
out.putNextEntry(new ZipEntry(files[i]));
int count;
while((count = in.read(data,0,1000)) != -1)
{
out.write(data, 0, count);
}
out.closeEntry();
}
out.flush();
out.close();
上記のコードでは、 out はフォルダーであり、いくつかのファイルが必要です。また、フォルダーを空にすることはできません。その場合、例外 java.util.zip.ZipException がスローされるか、その中にファイルが含まれていてもサブフォルダーを含めることができません (例:out \newfolder\image.jpeg) その場合、java.io.FileNotFoundException: out\newfolder (アクセスが拒否されます) がスローされます。
私の場合、フォルダー構造に沿って空のフォルダーが存在する可能性があるデータベースにクエリを実行して、上記のファイル構造を構築します。
誰かが私に解決策を教えてもらえますか?
ありがとうございました。