资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

java下gz压缩代码 gzip压缩命令

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

java解压缩.gz .zip .tar.gz等格式的压缩包方法总结

网站建设哪家好,找成都创新互联公司!专注于网页设计、网站建设、微信开发、小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了新沂免费建站欢迎大家使用!

1、.gz文件是linux下常见的压缩格式。使用 java.util.zip.GZIPInputStream即可,压缩是 java.util.zip.GZIPOutputStream

1 public static void unGzipFile(String sourcedir) {

2 String ouputfile = "";

3 try {

4 //建立gzip压缩文件输入流

5 FileInputStream fin = new FileInputStream(sourcedir);

6 //建立gzip解压工作流

7 GZIPInputStream gzin = new GZIPInputStream(fin);

8 //建立解压文件输出流

9 ouputfile = sourcedir.substring(0,sourcedir.lastIndexOf('.'));

10 ouputfile = ouputfile.substring(0,ouputfile.lastIndexOf('.'));

11 FileOutputStream fout = new FileOutputStream(ouputfile);

12

13 int num;

14 byte[] buf=new byte[1024];

15

16 while ((num = gzin.read(buf,0,buf.length)) != -1)

17 {

18 fout.write(buf,0,num);

19 }

20

21 gzin.close();

22 fout.close();

23 fin.close();

24 } catch (Exception ex){

25 System.err.println(ex.toString());

26 }

27 return;

28 }

2、zip文件,使用java.util.zip.ZipEntry 和 java.util.zip.ZipFile

1 /**

2 * 解压缩zipFile

3 * @param file 要解压的zip文件对象

4 * @param outputDir 要解压到某个指定的目录下

5 * @throws IOException

6 */

7 public static void unZip(File file,String outputDir) throws IOException {

8 ZipFile zipFile = null;

9

10 try {

11 Charset CP866 = Charset.forName("CP866"); //specifying alternative (non UTF-8) charset

12 //ZipFile zipFile = new ZipFile(zipArchive, CP866);

13 zipFile = new ZipFile(file, CP866);

14 createDirectory(outputDir,null);//创建输出目录

15

16 Enumeration? enums = zipFile.entries();

17 while(enums.hasMoreElements()){

18

19 ZipEntry entry = (ZipEntry) enums.nextElement();

20 System.out.println("解压." + entry.getName());

21

22 if(entry.isDirectory()){//是目录

23 createDirectory(outputDir,entry.getName());//创建空目录

24 }else{//是文件

25 File tmpFile = new File(outputDir + "/" + entry.getName());

26 createDirectory(tmpFile.getParent() + "/",null);//创建输出目录

27

28 InputStream in = null;

29 OutputStream out = null;

30 try{

31 in = zipFile.getInputStream(entry);;

32 out = new FileOutputStream(tmpFile);

33 int length = 0;

34

35 byte[] b = new byte[2048];

36 while((length = in.read(b)) != -1){

37 out.write(b, 0, length);

38 }

39

40 }catch(IOException ex){

41 throw ex;

42 }finally{

43 if(in!=null)

44 in.close();

45 if(out!=null)

46 out.close();

47 }

48 }

49 }

50

51 } catch (IOException e) {

52 throw new IOException("解压缩文件出现异常",e);

53 } finally{

54 try{

55 if(zipFile != null){

56 zipFile.close();

57 }

58 }catch(IOException ex){

59 throw new IOException("关闭zipFile出现异常",ex);

60 }

61 }

62 }

63

64 /**

65 * 构建目录

66 * @param outputDir

67 * @param subDir

68 */

69 public static void createDirectory(String outputDir,String subDir){

70 File file = new File(outputDir);

71 if(!(subDir == null || subDir.trim().equals(""))){//子目录不为空

72 file = new File(outputDir + "/" + subDir);

73 }

74 if(!file.exists()){

75 if(!file.getParentFile().exists())

76 file.getParentFile().mkdirs();

77 file.mkdirs();

78 }

79 }

3、.tar.gz文件可以看做先用tar打包,再使用gz进行压缩。

使用org.apache.tools.tar.TarEntry; org.apache.tools.tar.TarInputStream 和 org.apache.tools.tar.TarOutputStream

1 //------------------------------------------------------------------------------------------------------

2 /**

3 * 解压tar.gz 文件

4 * @param file 要解压的tar.gz文件对象

5 * @param outputDir 要解压到某个指定的目录下

6 * @throws IOException

7 */

8 public static void unTarGz(File file,String outputDir) throws IOException{

9 TarInputStream tarIn = null;

10 try{

11 tarIn = new TarInputStream(new GZIPInputStream(

12 new BufferedInputStream(new FileInputStream(file))),

13 1024 * 2);

14

15 createDirectory(outputDir,null);//创建输出目录

16

17 TarEntry entry = null;

18 while( (entry = tarIn.getNextEntry()) != null ){

19

20 if(entry.isDirectory()){//是目录

21 entry.getName();

22 createDirectory(outputDir,entry.getName());//创建空目录

23 }else{//是文件

24 File tmpFile = new File(outputDir + "/" + entry.getName());

25 createDirectory(tmpFile.getParent() + "/",null);//创建输出目录

26 OutputStream out = null;

27 try{

28 out = new FileOutputStream(tmpFile);

29 int length = 0;

30

31 byte[] b = new byte[2048];

32

33 while((length = tarIn.read(b)) != -1){

34 out.write(b, 0, length);

35 }

36

37 }catch(IOException ex){

38 throw ex;

39 }finally{

40

41 if(out!=null)

42 out.close();

43 }

44 }

45 }

46 }catch(IOException ex){

47 throw new IOException("解压归档文件出现异常",ex);

48 } finally{

49 try{

50 if(tarIn != null){

51 tarIn.close();

52 }

53 }catch(IOException ex){

54 throw new IOException("关闭tarFile出现异常",ex);

55 }

56 }

57 }

使用到的包头有:

1 import java.io.BufferedInputStream;

2 import java.io.File;

3 import java.io.FileInputStream;

4 import java.io.FileOutputStream;

5 import java.io.IOException;

6 import java.io.InputStream;

7 import java.io.OutputStream;

8

9 import java.nio.charset.Charset;

10 import java.util.Enumeration;

11 import java.util.zip.GZIPInputStream;

12 import java.util.zip.ZipEntry;

13 import java.util.zip.ZipFile;

14

15 import org.apache.tools.tar.TarEntry;

16 import org.apache.tools.tar.TarInputStream;

17 import org.apache.tools.tar.TarOutputStream;

java如何解压.gz后缀的压缩包

File file = new File(zipFilePath); 将zip文件路径转换 成文件

zipFile = new ZipFile(file); 调用java util下面的zipfile类

Enumeration? zipEnum = zipFile.entries(); 将zip文件里面的内容都放在迭代器里面了

ZipEntry entry = (ZipEntry) zipEnum.nextElement();,然后迭代出ZipEntry对象。

zipFile.getInputStream(entry)就可以得到所需要的流了,之后做你需要的操作。

用java如何解析gz文件

一个偷懒的做法是调用操作系统命令把gz解压缩,然后再读取。网上也许能找到一些操作gz的java库。

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

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

1.

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

2.

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

3.

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

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

4.

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

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


当前文章:java下gz压缩代码 gzip压缩命令
转载来于:http://cdkjz.cn/article/dooiosp.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220