Ошибка при распаковке архива, созданного truezip, который содержит файлы размером более 2 ГБ - PullRequest
0 голосов
/ 21 сентября 2011

Я использовал java.util.zip для архивирования файлов, пока не столкнулся с проблемами для файлов большого размера (> 2 ГБ). Я попытался перейти на truezip. Мне удалось успешно заархивировать файлы, но при извлечении я получаю ошибку «Ошибка проверки файла». Вот код, используемый для архивирования файлов.

int BUFF_MAX_SIZE = 524288;
    byte[] buf = new byte[BUFF_MAX_SIZE];
    long time;
    long size;
    File fp;
    String[] filenames = {"D:\\abc", "D:\\large file", "D:\\xyz"};
    int n = filenames.length;
    ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream("archive.zip")), Charset.forName("UTF-8"));
    for (int i = 0; i < n; i++) {
        fp = new File(filenames[i]);
        time = fp.lastModified();
        size = fp.length();            
        try {
            TFileInputStream in = new TFileInputStream(filenames[i]);
            ZipEntry ze = new ZipEntry(filenames[i]);
            ze.setTime(time);
            ze.setSize(size);
            out.putNextEntry(ze);
            TFile.getDefaultArchiveDetector();
            int len = 0;
            collectCnt = 0;
            while ((len = in.read(buf, 0, BUFF_MAX_SIZE)) > 0) {
                out.write(buf, 0, len);
            }
            in.close();
            out.closeEntry();

        } catch (Exception ex) {
            //
        }
    }
    try{
        out.close();
    } catch (Exception ex){
        // error closing outout stream.
    }
...