Мониторинг прогресса выполнения метода Zip4J extractAll () - PullRequest
0 голосов
/ 30 сентября 2019

enter image description here Я использую Zip4J для распаковки zip-файла и могу это сделать. Однако я хочу использовать монитор прогресса, представленный в Zip4J, но не могу использовать его успешно. В документации только сказано, что он должен был работать в режиме потока true. Я сделал это, и моя консоль остановилась на этом в командной строке. Любой рабочий пример extractAll () с монитором прогресса.

public String unzipFile(String sourceFilePath, String extractionPath) {
        String extractionDirectory = "";
        FileHeader fileHeader = null;
        if (FileUtility.isPathExist(sourceFilePath) && FileUtility.isPathExist(extractionPath)) {
            try {
                ZipFile zipFile = new ZipFile(sourceFilePath);
                LOG.info("File Extraction started");
                List<FileHeader> fileHeaderList = zipFile.getFileHeaders();
                if (fileHeaderList.size() > 0)
                    fileHeader = (FileHeader) fileHeaderList.get(0);
                if (fileHeader != null)
                    extractionDirectory = splitFileName(fileHeader.getFileName());
                long totalPercentage = 235;
                long startTime = System.currentTimeMillis();
                zipFile.extractAll(extractionPath);
                LOG.info("File Extraction completed.");
                System.out.println();
            } catch (ZipException e) {
                LOG.error("Extraction Exception ->\n" + e.getMessage());
            }
        } else {
            LOG.error("Either source path or extraction path is not exist.");
        }
        return extractionDirectory;
    }

Ответы [ 2 ]

1 голос
/ 30 сентября 2019

Не знаю, работает нормально, если вы добавляете достаточно файлов, что на самом деле есть прогресс, чтобы увидеть. Я добавил несколько действительно толстых для этой цели.

@Test
public void testExtractAllDeflateAndNoEncryptionExtractsSuccessfully() throws IOException {
    ZipFile zipFile = new ZipFile(generatedZipFile);

     List<File> toAdd = Arrays.asList(
            getTestFileFromResources("sample_text1.txt"),
            getTestFileFromResources("sample_text_large.txt"),
            getTestFileFromResources("OrccTutorial.pdf"),
             getTestFileFromResources("introduction-to-automata-theory.pdf"),
             getTestFileFromResources("thomas.pdf")
    );
    zipFile.addFiles(toAdd);

    zipFile.setRunInThread(true);

    zipFile.extractAll(outputFolder.getPath());

    ProgressMonitor mon = zipFile.getProgressMonitor();
    while (mon.getState() == BUSY) {
        System.out.println(zipFile.getProgressMonitor().getPercentDone());
        try {
            Thread.sleep(10);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
    }
    ZipFileVerifier.verifyFolderContentsSameAsSourceFiles(outputFolder);
    verifyNumberOfFilesInOutputFolder(outputFolder, 5);
}
1 голос
/ 30 сентября 2019

testAddFilesWithProgressMonitor.java в тестовых примерах проекта показывает, как использовать ProgressMonitor.

...