Cześć
Potrzebuję utworzyć archiwum zip z hasłem, plik potem chcę rozpakować np. 7zip-em. Próbowałem rozwiązania ze strony http://java.sys-con.com/node/1258827 , ale nie mogę znaleźć wszystkich opisanych tam plików *.jar aby to przetestować. Próbowałem korzystać z zip4j ale kod:
public void create()
{
try {
ZipFile zipFile = new ZipFile("D:\\plik.zip");
File fileToAdd = new File("D:\\test.txt");
ZipParameters parameters = new ZipParameters();
parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);
parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);
parameters.setEncryptFiles(true);
parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_STANDARD);
parameters.setPassword("mdmd");
zipFile.addFile(fileToAdd, parameters);
} catch (ZipException e) {
e.printStackTrace();
}
}
Zwraca wyjątek:
net.lingala.zip4j.exception.ZipException: Probably not a zip file or a corrupted zip file
at net.lingala.zip4j.core.HeaderReader.readEndOfCentralDirectoryRecord(HeaderReader.java:179)
at net.lingala.zip4j.core.HeaderReader.readAllHeaders(HeaderReader.java:78)
at net.lingala.zip4j.core.ZipFile.readZipInfo(ZipFile.java:425)
at net.lingala.zip4j.core.ZipFile.checkZipModel(ZipFile.java:935)
at net.lingala.zip4j.core.ZipFile.addFiles(ZipFile.java:263)
at net.lingala.zip4j.core.ZipFile.addFile(ZipFile.java:250)
at pl.zus.moral.zip.Zip.create(Zip.java:37)
at pl.zus.moral.zip.ZipMain.main(ZipMain.java:19)
Caused by: java.io.IOException: Negative seek offset
at java.io.RandomAccessFile.seek(Native Method)
at net.lingala.zip4j.core.HeaderReader.readEndOfCentralDirectoryRecord(HeaderReader.java:117)
... 7 more
Polećcie jakieś książki (mogą być anglojęzyczne) lub strony gdzie opisane jest tworzenie archiwum z hasłem. Najlepszym rozwiązaniem by było "dodanie hasła" do istniejącego pliku zip.