MyZipFile.zip
(1)ファイルMyFile.txt
と(2)ファイルを含むフォルダーMyFolder
を含むzipファイルがあるとしますMyFileInMyFolder.txt
。つまり、次のようなものです。
MyZipFile.zip
|->MyFile.txt
|->MyFolder
|->MyFileInMyFolder.txt
このzipアーカイブを解凍したいと思います。私がオンラインで検索して見つけた最も一般的なコードサンプルはZipInputStream
、この質問の下部に貼り付けられたコードのようなクラスを使用しています。ただし、これに関する問題は、上記の例を使用するとMyFolder
、の内容を作成しますが、解凍しないことですMyFolder
。zipアーカイブ内のフォルダの内容を、ZipInputStream
または他の方法で解凍できるかどうかを知っている人はいますか?
public static boolean unzip(File sourceZipFile, File targetFolder)
{
// pre-stuff
ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream(sourceZipFile));
ZipEntry zipEntry = null;
while ((zipEntry = zipInputStream.getNextEntry()) != null)
{
File zipEntryFile = new File(targetFolder, zipEntry.getName());
if (zipEntry.isDirectory())
{
if (!zipEntryFile.exists() && !zipEntryFile.mkdirs())
return false;
}
else
{
FileOutputStream fileOutputStream = new FileOutputStream(zipEntryFile);
byte buffer[] = new byte[1024];
int count;
while ((count = zipInputStream.read(buffer, 0, buffer.length)) != -1)
fileOutputStream.write(buffer, 0, count);
fileOutputStream.flush();
fileOutputStream.close();
zipInputStream.closeEntry();
}
}
zipInputStream.close();
// post-stuff
}