まず第一に、私の問題を「直接」解決するのに役立つ他の質問が見当たりませんでした。そのため、新しい質問を作成することにしました。
次のコードは、複数のファイルとフォルダーを解凍するようにプログラムされています。
try {
BufferedOutputStream dest = null;
FileInputStream fis = new FileInputStream(file);
CheckedInputStream checksum = new CheckedInputStream(fis, new Adler32());
ZipInputStream zis = new ZipInputStream(new BufferedInputStream(checksum));
ZipEntry entry;
while ((entry = zis.getNextEntry()) != null) {
if (!entry.isDirectory()) {
String rutaarchivo = entry.getName();
int index= rutaarchivo.lastIndexOf('/');
rutaarchivo=rutaarchivo.substring(index+1);
estado.setText("Estado: Copiando archivos nuevos: " + entry);
setProgress(60);
int zipCounter = 0;
int count;
int BUFFER = 2048;
byte datazip[] = new byte[BUFFER];
FileOutputStream fos = new FileOutputStream(rutaarchivo);
dest = new BufferedOutputStream(fos, BUFFER);
while ((count = zis.read(datazip, 0, BUFFER)) != -1) {
dest.write(datazip, 0, count);
zipCounter += count;
progreso.setValue(zipCounter);
}
dest.flush();
dest.close();
}
}
zis.close();
} catch (Exception e) {
e.printStackTrace();
PrintStream outprint = new PrintStream(new FileOutputStream("output.txt"));
System.setOut(outprint);
} catch (MalformedURLException ex) {
ex.printStackTrace();
PrintStream outprint = new PrintStream(new FileOutputStream("output.txt"));
System.setOut(outprint);
} catch (IOException ioe) {
ioe.printStackTrace();
PrintStream outprint = new PrintStream(new FileOutputStream("output.txt"));
System.setOut(outprint);
}
このコードは正しく機能していますが、重要な間違いがあります。フォルダーを解凍しますが、次のように表示する代わりに:
- file1.txt
- file2.txt
- file3.txt
- フォルダ/file4.txt
- フォルダ/file5.txt
- フォルダ/file6.txt
これは次のことを示しています。
- file1.txt
- file2.txt
- file3.txt
- file4.txt
- file5.txt
- file6.txt
私は何を間違っていますか?