TrueZip создает виртуальный каталог вместо архива - PullRequest
2 голосов
/ 29 сентября 2011

У меня проблема со следующим кодом:

    TFile src = new TFile(this.getMellomStasjon());
    TFile dst = new TFile(this.getZipFolder()+""+zipFile+".zip");
    if(dst.isDirectory())
        dst = new TFile(dst, src.getName());

    TFile.cp_rp(src, dst, null);
    TFile file = newNonArchiveFile(dst);
    if(dst.isArchive())
        TFile.umount(dst);

Моя цель - поместить каталог, содержащий файлы, в ZIP-архив с использованием TrueZip.Проблема в том, что код работает локально, но не на рабочем компьютере.Локально я получаю один ZIP-файл, но в производственном процессе я получаю папку, содержащую файлы, которые я пытаюсь поместить в архив (виртуальный каталог).Я должен использовать TrueZip, потому что я архивирую содержимое более 4 ГБ.

Есть ли способ заставить TrueZip создать архив вместо (виртуального) каталога?

Ответы [ 2 ]

2 голосов
/ 02 октября 2011

Вероятно, это не сработало, потому что артефакт JAR модуля TrueZIP Driver ZIP отсутствовал в пути к классу времени выполнения.

Чтобы убедиться, что это так, вы можете сделать ZipDriver зависимым от времени компиляции, установив пользовательский TArchiveDetector. Вот пример: http://truezip.java.net/usecases/aff.html

Код, который вы показываете здесь, проблематичен. Возможно, вам следует исправить это на:

// Call this once at application startup to make the ZipDriver a compile time
// dependency.
TFile.setDefaultArchiveDetector(
  new TArchiveDetector(
  "zip",
  new ZipDriver(IOPoolLocator.SINGLETON)));

// Here's the work.
TFile src = new TFile(this.getMellomStasjon());
TFile dst = new TFile(this.getZipFolder(), zipFile + ".zip");
TFile.cp_rp(src, dst, TArchiveDetector.NULL);
TFile.umount(dst);
0 голосов
/ 30 сентября 2011

Найдена альтернативная библиотека от Apache, Commons Compression .Используя его вместо TrueZip.Кажется, поддерживает также файлы> 4 ГБ.

...