Search in sources :

Example 56 with TarArchiveEntry

use of org.apache.commons.compress.archivers.tar.TarArchiveEntry in project POL-POM-5 by PlayOnLinux.

the class Tar method uncompress.

/**
     * Uncompress a tar
     *
     * @param countingInputStream
     *            to count the number of byte extracted
     * @param outputDir
     *            The directory where files should be extracted
     * @return A list of extracted files
     * @throws ArchiveException
     *             if the process fails
     */
private List<File> uncompress(final InputStream inputStream, CountingInputStream countingInputStream, final File outputDir, long finalSize, Consumer<ProgressEntity> stateCallback) {
    final List<File> uncompressedFiles = new LinkedList<>();
    try (ArchiveInputStream debInputStream = new ArchiveStreamFactory().createArchiveInputStream("tar", inputStream)) {
        TarArchiveEntry entry;
        while ((entry = (TarArchiveEntry) debInputStream.getNextEntry()) != null) {
            final File outputFile = new File(outputDir, entry.getName());
            if (entry.isDirectory()) {
                LOGGER.info(String.format("Attempting to write output directory %s.", outputFile.getAbsolutePath()));
                if (!outputFile.exists()) {
                    LOGGER.info(String.format("Attempting to createPrefix output directory %s.", outputFile.getAbsolutePath()));
                    Files.createDirectories(outputFile.toPath());
                }
            } else {
                LOGGER.info(String.format("Creating output file %s (%s).", outputFile.getAbsolutePath(), entry.getMode()));
                if (entry.isSymbolicLink()) {
                    Files.createSymbolicLink(Paths.get(outputFile.getAbsolutePath()), Paths.get(entry.getLinkName()));
                } else {
                    try (final OutputStream outputFileStream = new FileOutputStream(outputFile)) {
                        IOUtils.copy(debInputStream, outputFileStream);
                        Files.setPosixFilePermissions(Paths.get(outputFile.getPath()), fileUtilities.octToPosixFilePermission(entry.getMode()));
                    }
                }
            }
            uncompressedFiles.add(outputFile);
            stateCallback.accept(new ProgressEntity.Builder().withPercent((double) countingInputStream.getCount() / (double) finalSize * (double) 100).withProgressText("Extracting " + outputFile.getName()).build());
        }
        return uncompressedFiles;
    } catch (IOException | org.apache.commons.compress.archivers.ArchiveException e) {
        throw new ArchiveException("Unable to extract the file", e);
    }
}
Also used : LinkedList(java.util.LinkedList) TarArchiveEntry(org.apache.commons.compress.archivers.tar.TarArchiveEntry) ArchiveStreamFactory(org.apache.commons.compress.archivers.ArchiveStreamFactory) ArchiveInputStream(org.apache.commons.compress.archivers.ArchiveInputStream)

Example 57 with TarArchiveEntry

use of org.apache.commons.compress.archivers.tar.TarArchiveEntry in project hadoop by apache.

the class TestFSDownload method createTarFile.

static LocalResource createTarFile(FileContext files, Path p, int len, Random r, LocalResourceVisibility vis) throws IOException, URISyntaxException {
    byte[] bytes = new byte[len];
    r.nextBytes(bytes);
    File archiveFile = new File(p.toUri().getPath() + ".tar");
    archiveFile.createNewFile();
    TarArchiveOutputStream out = new TarArchiveOutputStream(new FileOutputStream(archiveFile));
    TarArchiveEntry entry = new TarArchiveEntry(p.getName());
    entry.setSize(bytes.length);
    out.putArchiveEntry(entry);
    out.write(bytes);
    out.closeArchiveEntry();
    out.close();
    LocalResource ret = recordFactory.newRecordInstance(LocalResource.class);
    ret.setResource(URL.fromPath(new Path(p.toString() + ".tar")));
    ret.setSize(len);
    ret.setType(LocalResourceType.ARCHIVE);
    ret.setVisibility(vis);
    ret.setTimestamp(files.getFileStatus(new Path(p.toString() + ".tar")).getModificationTime());
    return ret;
}
Also used : Path(org.apache.hadoop.fs.Path) FileOutputStream(java.io.FileOutputStream) TarArchiveOutputStream(org.apache.commons.compress.archivers.tar.TarArchiveOutputStream) File(java.io.File) TarArchiveEntry(org.apache.commons.compress.archivers.tar.TarArchiveEntry) LocalResource(org.apache.hadoop.yarn.api.records.LocalResource)

Example 58 with TarArchiveEntry

use of org.apache.commons.compress.archivers.tar.TarArchiveEntry in project hadoop by apache.

the class TestFSDownload method createTgzFile.

static LocalResource createTgzFile(FileContext files, Path p, int len, Random r, LocalResourceVisibility vis) throws IOException, URISyntaxException {
    byte[] bytes = new byte[len];
    r.nextBytes(bytes);
    File gzipFile = new File(p.toUri().getPath() + ".tar.gz");
    gzipFile.createNewFile();
    TarArchiveOutputStream out = new TarArchiveOutputStream(new GZIPOutputStream(new FileOutputStream(gzipFile)));
    TarArchiveEntry entry = new TarArchiveEntry(p.getName());
    entry.setSize(bytes.length);
    out.putArchiveEntry(entry);
    out.write(bytes);
    out.closeArchiveEntry();
    out.close();
    LocalResource ret = recordFactory.newRecordInstance(LocalResource.class);
    ret.setResource(URL.fromPath(new Path(p.toString() + ".tar.gz")));
    ret.setSize(len);
    ret.setType(LocalResourceType.ARCHIVE);
    ret.setVisibility(vis);
    ret.setTimestamp(files.getFileStatus(new Path(p.toString() + ".tar.gz")).getModificationTime());
    return ret;
}
Also used : Path(org.apache.hadoop.fs.Path) GZIPOutputStream(java.util.zip.GZIPOutputStream) FileOutputStream(java.io.FileOutputStream) TarArchiveOutputStream(org.apache.commons.compress.archivers.tar.TarArchiveOutputStream) File(java.io.File) TarArchiveEntry(org.apache.commons.compress.archivers.tar.TarArchiveEntry) LocalResource(org.apache.hadoop.yarn.api.records.LocalResource)

Example 59 with TarArchiveEntry

use of org.apache.commons.compress.archivers.tar.TarArchiveEntry in project cdap by caskdata.

the class LocalizationUtilsTest method addFilesToTar.

private void addFilesToTar(TarArchiveOutputStream tos, File... filesToAdd) throws IOException {
    for (File file : filesToAdd) {
        TarArchiveEntry tarEntry = new TarArchiveEntry(file);
        tos.putArchiveEntry(tarEntry);
        if (file.isFile()) {
            com.google.common.io.Files.copy(file, tos);
        }
        tos.closeArchiveEntry();
    }
}
Also used : File(java.io.File) TarArchiveEntry(org.apache.commons.compress.archivers.tar.TarArchiveEntry)

Example 60 with TarArchiveEntry

use of org.apache.commons.compress.archivers.tar.TarArchiveEntry in project tika by apache.

the class TarWriter method tarStoreBuffer.

private static void tarStoreBuffer(TarArchiveOutputStream zip, String name, byte[] dataBuffer) throws IOException {
    TarArchiveEntry entry = new TarArchiveEntry(name);
    entry.setSize(dataBuffer.length);
    zip.putArchiveEntry(entry);
    zip.write(dataBuffer);
    zip.closeArchiveEntry();
}
Also used : TarArchiveEntry(org.apache.commons.compress.archivers.tar.TarArchiveEntry)

Aggregations

TarArchiveEntry (org.apache.commons.compress.archivers.tar.TarArchiveEntry)65 File (java.io.File)33 TarArchiveInputStream (org.apache.commons.compress.archivers.tar.TarArchiveInputStream)31 FileInputStream (java.io.FileInputStream)24 FileOutputStream (java.io.FileOutputStream)20 IOException (java.io.IOException)20 InputStream (java.io.InputStream)15 TarArchiveOutputStream (org.apache.commons.compress.archivers.tar.TarArchiveOutputStream)15 BufferedInputStream (java.io.BufferedInputStream)12 ArchiveStreamFactory (org.apache.commons.compress.archivers.ArchiveStreamFactory)9 BufferedOutputStream (java.io.BufferedOutputStream)8 GzipCompressorInputStream (org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream)8 ByteArrayInputStream (java.io.ByteArrayInputStream)7 ByteArrayOutputStream (java.io.ByteArrayOutputStream)7 OutputStream (java.io.OutputStream)6 GZIPInputStream (java.util.zip.GZIPInputStream)5 ZipFile (java.util.zip.ZipFile)4 Test (org.junit.Test)4 ArrayList (java.util.ArrayList)3 LinkedList (java.util.LinkedList)3