Пожалуйста, взгляните на приведенный ниже код.Как zip файлы и папки в Java?
public void startCompress(String path,String fileName,String outputLocation,int compressType,int filSize) throws Exception
{
System.out.println("Input Location: "+path);
System.out.println("Output Location: "+outputLocation);
System.out.println(compressType);
byte[] bs=new byte[filSize];
System.out.println(filSize);
FileOutputStream fos=new FileOutputStream(outputLocation+"/test.zip");
System.out.println(fos.toString());
ZipOutputStream zos=new ZipOutputStream(fos);
ZipEntry ze = new ZipEntry(fileName);
zos.putNextEntry(ze);
FileInputStream inputStream=new FileInputStream(path);
int len;
while((len=inputStream.read(bs))>0){
zos.write(bs, 0, len);
}
inputStream.close();
zos.closeEntry();
zos.close();
}
В приведенном выше коде мы сжимаем файл, используя java.util.zip
. Но у нас есть проблема. То есть, если мы выберем несколько файлов, тогда сжимается только один файл. Если мы выберем папку, сжатие просто не сработает.
Как исправить это, чтобы сжать файл, файлы, папку, папки или даже вложенные папки? Java-пакет zip поддерживает .zip, .tar, .tarGz и tarZ. Таким образом, решение не должно быть чем-то, что ограничено расширением .zip.
Затем передать ему список файлов ... что-то вроде [это] (http://stackoverflow.com/questions/16381281/creating-folders-in-a-zip-folder-in-java/ 16381391 # 16381391) o [this] (http://stackoverflow.com/questions/28732118/java-zip-file-with-non-static-filename/28732297#28732297) например – MadProgrammer
http: //www.mkyong. com/java/how-to-compress-files-in-zip-format/А также http://stackoverflow.com/questions/15968883/how-to-zip-a-folder-itself-using-java –
@SercanOzdemir : Его пример отличается, мы должны определить, является ли выбранным файл или папка, а также. –