java里怎么解压tar.gz文件啊,网上好多例子都不行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java里怎么解压tar.gz文件啊,网上好多例子都不行相关的知识,希望对你有一定的参考价值。

我新建了一个文件夹a.tar.gz文件夹,是文件夹不是文件,结果安装网上例子解压出来的a是一个无法打开的文件,我主要参考是这个帖子http://blog.csdn.net/u013066244/article/details/72783575。
另外,如果我新建一个b.txt文件,写点内容,然后包成b.tar.gz,结果到是能解压出来,但是txt里是空的。
请求大神们帮忙解答一下
更多 0

最后怎么解决的,我现在也遇到这个问题了,单个文件可以解压可以压缩,写入的测试内容也在,换成文件夹就不行了。能找到的案例全都是解压成文件,但是本身是个文件夹的GZ包解压了以后也打不开。 参考技术A

我觉得你的步骤有问题,tar.gz压缩包里放文件或文件夹都无所谓,需要用程序来生成,下面详细说明:

    用程序中的方法【archive】生成tar压缩文件

    用程序中的方法【compressArchive】生成tar.gz压缩文件

    将生成的压缩文件为参数进行解压,具体是:

    unCompressArchiveGz("d:\\\\test\\\\xmlbak.tar.gz");//解压

    查看解压后的文件夹内容和文件内容,均可以正常显示访问

    楼主的问题主要是手动生成了一个压缩文件,这是主要的问题原因。

java 如何用zlib解压缩tar.gz文件

参考技术A public static void makeZip(List<File> fileList,String zipPath,boolean isDelete)
byte[] buf = new byte[1024];
try
// Create the ZIP file
File zipFile = new File(zipPath);
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFile));
// Compress the files
for (int i = 0; i < fileList.size(); i++)
FileInputStream in = new FileInputStream(fileList.get(i));
// Add ZIP entry to output stream.
out.putNextEntry(new ZipEntry(fileList.get(i).getName()));
// Transfer bytes from the file to the ZIP file
int len;
while ( (len = in.read(buf)) > 0)
out.write(buf, 0, len);

// Complete the entry
out.closeEntry();
in.close();

// Complete the ZIP file
out.close();
System.out.println("压缩完成.");

//把旧的文件删除
if(isDelete == true)
for (int i = 0; i < fileList.size(); i++)
File oldFile = fileList.get(i);
oldFile.delete();



catch (IOException e)
e.printStackTrace();


public static void main(String[] args)
File in1=new File("D:\\a.txt");
File in2=new File("D:\\b.txt");
File[] file=new File[]in1,in2;
File zip=new File("D:\\ab.zip");
IDMZip mgr=new IDMZip();
mgr.ZipFiles(file, zip);


这个方法不管你是在windows下还是在linux下,都能正常执行。追问

谢谢,但是我是要解压这样20140718_185819.data.tar.gz 不是zip的

追答

你可以试试。还有这个方法。都是我项目里曾经用到过的。都是可用的。
public static List unZip(String path) throws FileNotFoundException,
IOException
path = path.replaceAll("\\\\","/");
String zipPath = path.substring(0,path.lastIndexOf("/")+1);
List xmlFileNameList = new ArrayList();
byte[] data = new byte[1024*2];
FileInputStream fis = new FileInputStream(path);
ZipInputStream zis = new ZipInputStream(fis);
ZipEntry entry = null;
while((entry = zis.getNextEntry())!= null)
if(entry.isDirectory())
File file = new File(zipPath+entry.getName());
file.mkdirs();
continue;

本回答被提问者采纳

以上是关于java里怎么解压tar.gz文件啊,网上好多例子都不行的主要内容,如果未能解决你的问题,请参考以下文章

如何解压.tar.gz gzip gz 类型文档

tar包和tar.gz包有啥区别

java 如何用zlib解压缩tar.gz文件

linux下请问 bin结尾的JDK的文件去哪里下载 ??官网给的全是RPM和tar.gz结尾的

如何只查看tar.gz压缩文件中顶层目录的列表

求教一个关于在Linux下解压的问题