Java怎么实现创建Zip压缩包并写入文件
Java怎么实现创建Zip压缩包并写入文件
Java怎么实现创建Zip压缩包并写入文件,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
Java是什么
Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序。
前言
工作中需要把一些数据放到一个zip的压缩包中,可以使用 ZipOutputStream。ZipOutputStream可以将内容直接写入到zip包中。一般创建ZipOutputStream通常是先封装一个FileOutputStream,然后在每写入一个文件之前,需要先调用一次putNextEntry,然后使用write写入byte[]类型的数据,当写入完毕的时候使用colseEntry来结束这个文件的打包。当然也可以通过ZipOutputStream直接把数据写入压缩包内,在压缩包内构建数据。
使用
publicstaticvoidfiletest()throwsIOException{StringtxtPath="D:\\fileTest\\image\\2.txt";StringzipPath="D:\\fileTest\\image\\2.zip";//压缩包路径Stringstr="测试test123abc";//需要写入的数据//创建压缩包ZipOutputStreamzipOutputStream=newZipOutputStream(newFileOutputStream(zipPath));//封装一个文件FileWriterfileWriter=null;try{fileWriter=newFileWriter(txtPath);fileWriter.write(str);fileWriter.flush();fileWriter.close();}catch(IOExceptione){log.error("fileWriter",e);}//对上面封装好的文件构建一个FileInputStreamFileInputStreamfis=newFileInputStream(txtPath);//压缩包里创建一个空文件zipOutputStream.putNextEntry(newZipEntry("Request.json"));//写入压缩文件intlen;byte[]buffer=newbyte[1024];//字节数组大小可调节//读取fis字节流,转移到buffer字节数组中去,读取后fis为空while((len=fis.read(buffer))>0){zipOutputStream.write(buffer,0,len);}byte[]b=newbyte[1024];inta=fis.read(b);//关闭压缩包打包zipOutputStream.closeEntry();fis.close();zipOutputStream.flush();zipOutputStream.close();}
运行之后,将会创建如下文件:
压缩包内会产生一个叫Request.json文件,如图:
内容与2.txt里的内容一致,为“测试test123abc”。
上述方法是:先创建2.txt,再读取2.txt的内容,导入到压缩包内形成文件。相同的逻辑,我们可以读取任意其他文件,然后把他们放入到压缩包内。
直接将内容导入到压缩包内
当然我们也可以直接将数据导入到压缩包内。实现如下:
publicstaticvoidfiletest()throwsIOException{StringzipPath="D:\\fileTest\\image\\3.zip";//压缩包路径Stringstr1="测试test123abc";//需要写入的数据Stringstr2="测试2";StringName1=StringUtils.join("文件.json");//压缩包里的文件StringName2=StringUtils.join("file/文件1.json");//在压缩包里创建file目录下的文件//创建压缩包ZipOutputStreamzipOutputStream=newZipOutputStream(newFileOutputStream(zipPath));//创建压缩包里的文件zipOutputStream.putNextEntry(newZipEntry(Name1));byte[]bytes1=str1.getBytes(StandardCharsets.UTF_8);zipOutputStream.write(bytes1,0,bytes1.length);//将数据写入到压缩包里的文件里面zipOutputStream.closeEntry();zipOutputStream.putNextEntry(newZipEntry(Name2));byte[]bytes2=str2.getBytes(StandardCharsets.UTF_8);zipOutputStream.write(bytes2,0,bytes2.length);zipOutputStream.closeEntry();zipOutputStream.flush();zipOutputStream.close();}
上述是直接将String类型数据转换成byte数组,导入到压缩包内,形成两个文件:
file文件夹里面是文件1.json,里面的内容是“测试2”,文件.json的内容则是“测试test123abc”。
关于Java怎么实现创建Zip压缩包并写入文件问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注恰卡编程网行业资讯频道了解更多相关知识。