ZipInputStream クラスを使用して抽出したい複数のファイルをそれぞれ含む複数の zip ファイルがあります。その中にはいくつかの画像があります。BufferedOutputStream を使用してこれらの画像を抽出しようとすると、部分的に解凍され、画像が不完全になります。
private void extractArchives() {
ZipInputStream zis;
File archiveDir = new File(
Environment.getExternalStorageDirectory().getAbsolutePath() +
"/archives/");
File[] files = archiveDir.listFiles();
for (int i = 0; i < files.length; ++i)
{
File file = files[i];
try
{
zis = new ZipInputStream(new FileInputStream(file));
ZipEntry ze;
while ((ze = zis.getNextEntry()) != null)
{
BufferedOutputStream bos;
byte[] buffer = new byte[102400];
int count;
while ((count = zis.read(buffer)) != -1)
{
String fileName = ze.getName();
if (fileName.endsWith(".jpg"))
{
path += File.separator + fileName;
bos = new BufferedOutputStream(new FileOutputStream(path));
bos.write(buffer, 0, count);
bos.close();
}
}
}
zis.close();
}
catch(FileNotFoundException e) { continue; }
//If the file is not a zip file or is a directory
catch (IOException e) { continue; }
}
}
上記のコードに何か問題がありますか?BufferedOutputStream を使用すると、この問題が発生しますか? アイデアをいただければ幸いです。ありがとう。