Пожалуйста, взгляните на приведенный ниже код.
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
. Но у нас есть проблема. То есть, если мы выбираем несколько файлов, то сжимается только один файл. Если мы выберем папку, сжатие просто не сработает.
Как я могу исправить это, чтобы сжать файл, файлы, папку, папки или даже вложенные папки? ZIP-пакет Java поддерживает форматы .zip, .tar, .tarGz и tarZ. Таким образом, решение не должно ограничиваться расширением .zip.
path = path.substring(sourcePath.length());
на что-то вродеpath = path.substring(sourceFile.getParentFile().length());
- person MadProgrammer   schedule 12.05.2015FileInputStream in = new FileInputStream(SOURCE_FOLDER + File.separator + file);
должна быть заменена наFileInputStream in = new FileInputStream(SOURCE_FOLDER + "/" + file);
, поскольку окна \ недействительны для формата zip, невыполнение этого приведет к тому, что корневой каталог вне zip-файла будет и подчеркнут, например. _ - это была забавная отладка! - person JGlass   schedule 04.04.2019