Ниже приведен код, который я пробовал.это архивирование только содержимого подпапки, но не папки, в которой мне нужно архивировать все подпапки вместе с содержимым.что я тут делаю не такПример: у меня есть папка 'demo' внутри демонстрационной папки, у меня есть папки a, b, c.Я хочу заархивировать a, b, c вместе с содержимым, и zip не должен включать родительский элемент, который является демо.
static void addDir(File dirObj, ZipOutputStream out) throws IOException {
File[] files = dirObj.listFiles();
byte[] tmpBuf = new byte[1024];
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) {
addDir(files[i], out);
continue;
}
FileInputStream in = new FileInputStream(files[i].getAbsolutePath());
System.out.println(" Adding: " + files[i].getName());
out.putNextEntry(new ZipEntry(files[i].getName()));
int len;
while ((len = in.read(tmpBuf)) > 0) {
out.write(tmpBuf, 0, len);
}
out.closeEntry();
in.close();
}
}
public static void zipFiles(File[] subd) {
String zipFile = "test.zip";
try {
FileOutputStream fos = new FileOutputStream(zipFile);
ZipOutputStream zos = new ZipOutputStream(fos);
for (File dir : subd) {
addDir(dir, zos);
}
// close the ZipOutputStream
zos.close();
} catch (IOException ioe) {
System.out.println("Error creating zip file: " + ioe);
}