Я использую java.util.zip для архивирования некоторых файлов в java. Проблема, с которой я столкнулся, заключается в том, что заархивированный файл создаст папки для всех родительских каталогов. Например, если у меня есть файл в C: /folder1/folder2/folder3/file.txt
Это создаст заархивированный файл с папкой с именем папка 1, затем папка 2 и т. Д. До file.txt.
Результат, который я ищу, - это заархивированная папка с файлом file.txt в корне без каких-либо папок.
Вот пример кода
BufferedInputStream origin = null;
FileOutputStream dest = new
FileOutputStream("c:\\zip\\myfigs.zip");
ZipOutputStream out = new ZipOutputStream(new
BufferedOutputStream(dest));
//out.setMethod(ZipOutputStream.DEFLATED);
byte data[] = new byte[BUFFER];
// get a list of files from current directory
String files[] = {"C:/folder1/folder2/folder3/file.txt"};
for (int i=0; i<files.length; i++) {
System.out.println("Adding: "+files[i]);
FileInputStream fi = new
FileInputStream(files[i]);
origin = new
BufferedInputStream(fi, BUFFER);
ZipEntry entry = new ZipEntry(files[i]);
out.putNextEntry(entry);
int count;
while((count = origin.read(data, 0,
BUFFER)) != -1) {
out.write(data, 0, count);
}
origin.close();
}
out.close();
} catch(Exception e) {
e.printStackTrace();
}