[英]java unzipping files with folders
首先,我沒有看到任何其他問題可以直接幫助我解決問題,這就是為什么我決定創建一個新問題。
以下代碼被編程為解壓縮多個文件和文件夾。
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);
}
這段代碼可以正常工作,但是有一個重要的錯誤:它確實解壓縮了文件夾,但是沒有像這樣顯示它們:
它顯示了這一點:
我究竟做錯了什么?
您正在將FileOutputStream
中的文件名設置為僅文件名。
String rutaarchivo = entry.getName();
int index= rutaarchivo.lastIndexOf('/'); // removes directory path
rutaarchivo=rutaarchivo.substring(index+1); // removes directory path
...
FileOutputStream fos = new FileOutputStream(rutaarchivo);
這是一個壞主意。 您應該創建自己的基本文件路徑,並在其后附加一個文件名。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.