首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

commons compress 创设 tar.gz

2012-08-13 
commons compress 创建 tar.gz使用 jakarta.commons.compress-1.0.jar?public class Compress {??? public

commons compress 创建 tar.gz

使用 jakarta.commons.compress-1.0.jar

?

public class Compress {
??? public static void main(String[] args) throws IOException {
??????? String tarGzPath = "/home/ben/language/java/compress.tar.gz";
??????? String directoryPath = "/home/ben/language/java/Compress.java";

??????? Compress.createTarGzOfDirectory(directoryPath, tarGzPath);
??? }

??? /**
???? * Creates a tar.gz file at the specified path with the contents of the specified directory.
???? *
???? * @param dirPath The path to the directory to create an archive of
???? * @param archivePath The path to the archive to create
???? * @throws IOException If anything goes wrong
???? */
??? public static void createTarGzOfDirectory(String directoryPath, String tarGzPath) throws IOException {
??????? FileOutputStream fOut = null;
??????? BufferedOutputStream bOut = null;
??????? GzipCompressorOutputStream gzOut = null;
??????? TarArchiveOutputStream tOut = null;

??????? try {
??????????? fOut = new FileOutputStream(new File(tarGzPath));
??????????? bOut = new BufferedOutputStream(fOut);
??????????? gzOut = new GzipCompressorOutputStream(bOut);
??????????? tOut = new TarArchiveOutputStream(gzOut);

??????????? addFileToTarGz(tOut, directoryPath, "");
??????? } finally {
??????????? tOut.finish();

??????????? tOut.close();
??????????? gzOut.close();
??????????? bOut.close();
??????????? fOut.close();
??????? }
??? }

??? /**
???? * Creates a tar entry for the path specified with a name built from the base passed in and the file/directory name.
???? * If the path is a directory, a recursive call is made such that the full directory is added to the tar.
???? *
???? * @param tOut The tar file's output stream
???? * @param path The filesystem path of the file/directory being added
???? * @param base The base prefix to for the name of the tar file entry
???? * @throws IOException If anything goes wrong
???? */
??? private static void addFileToTarGz(TarArchiveOutputStream tOut, String path, String base) throws IOException {
??????? File f = new File(path);
??????? String entryName = base + f.getName();
??????? TarArchiveEntry tarEntry = new TarArchiveEntry(f, entryName);

??????? tOut.setLongFileMode(TarArchiveOutputStream.LONGFILE_GNU);
??????? tOut.putArchiveEntry(tarEntry);

??????? if (f.isFile()) {
??????????? IOUtils.copy(new FileInputStream(f), tOut);

??????????? tOut.closeArchiveEntry();
??????? } else {
??????????? tOut.closeArchiveEntry();

??????????? File[] children = f.listFiles();

??????????? if (children != null) {
??????????????? for (File child : children) {
??????????????????? addFileToTarGz(tOut, child.getAbsolutePath(), entryName + "/");
??????????????? }
??????????? }
??????? }
??? }

}

解压看这边博文:http://blog.pigflying.info/2011/06/commons-compresstargz.html

原文出处:http://www.thoughtspark.org/node/53

热点排行