Создание файла gz и добавление в него файла tar

Моя задача состоит в том, чтобы заархивировать список файлов, и этот tar должен храниться в файле.gz. Мне удалось создать файл.tar, но на следующем этапе, как и при создании файла.gz, возникла проблема. После создания.gz файл с tar внутри конвертируется в формат File без каких-либо расширений.

код Java для создания файла.tar

FileSystem fs = FileSystems.getDefault();
        OutputStream tar_output = new FileOutputStream(fs.getPath(hardLink.toString(), tarFileName + ".tar")
                .toFile());
        ArchiveOutputStream my_tar_ball = new ArchiveStreamFactory().createArchiveOutputStream(
                ArchiveStreamFactory.TAR, tar_output);
        Path p = null;
        TarArchiveEntry tar_file = null;
        for (String list : certFileList) {
            p = fs.getPath(hardLink.toString(), list);
            tar_file = new TarArchiveEntry(p.getFileName().toString());
            tar_file.setSize(p.toFile().length());
            my_tar_ball.putArchiveEntry(tar_file);
            IOUtils.copy(new FileInputStream(p.toFile()), my_tar_ball);
            my_tar_ball.closeArchiveEntry();
        }

вызвать функцию gzipIt

gzipIt(hardLink.toString() + "/" + tarFileName + ".gz", hardLink.toString() + "/" + tarFileName + ".tar");

Java-код для создания файла.gz

public static void gzipIt(String outputDir, String sourceFile) {

    byte[] buffer = new byte[1024];

    try {

        FileOutputStream fos = new FileOutputStream(new File(outputDir));
        GZIPOutputStream gzos = new GZIPOutputStream(fos);

        FileInputStream in = new FileInputStream(sourceFile);

        int len;
        while ((len = in.read(buffer)) > 0) {
            gzos.write(buffer, 0, len);
        }

        in.close();

        gzos.finish();
        gzos.close();

    } catch (IOException ex) {
        ex.printStackTrace();
    }
}

Может ли кто-нибудь помочь мне в решении проблемы.

С уважением, Сай

0 ответов

Другие вопросы по тегам