java生成压缩文件

            1)因为使用jdk自带的压缩类或导致中文乱码,所以使用ant.jar中带的压缩类

            2)maven中导入ant.jar

<dependency>
     <groupId>org.apache.ant</groupId>
     <artifactId>ant</artifactId>
     <version>1.9.4</version>
</dependency>
            3)压缩文件
 <span style="white-space:pre">	</span>    try
	    {
	        File file = new File("e:"+File.separator+"文件.txt");
		File bmp = new File("e:"+File.separator+"图像.bmp");
		if (!file.exists() || !bmp.exists()) 
		{  	 
		<span style="white-space:pre">	</span>System.out.println("文件不存在");  
		} 
		else
		{  
			File zip = new File("e:"+File.separator+"中文压缩.zip");  
			if (!zip.exists())
			{  
				zip.createNewFile();  
			 }  
             <span style="white-space:pre">		</span>// 创建文件输入流对象  
             <span style="white-space:pre">		</span>FileInputStream fin = new FileInputStream(file);  
             <span style="white-space:pre">		</span>FileInputStream bin = new FileInputStream(bmp);  
             <span style="white-space:pre">		</span>// 创建文件输出流对象  
             <span style="white-space:pre">		</span>FileOutputStream out = new FileOutputStream(zip);  
             <span style="white-space:pre">		</span>// 创建ZIP数据输出流对象  
             <span style="white-space:pre">		</span>ZipOutputStream zipOut = new ZipOutputStream(out); 
             <span style="white-space:pre">		</span>zipOut.setEncoding("gb18030");
             <span style="white-space:pre">		</span>// 创建指向压缩原始文件的入口  
             <span style="white-space:pre">		</span>int number = 0;  
             <span style="white-space:pre">		</span>zipOut.putNextEntry(new ZipEntry(file.getName()));  
             <span style="white-space:pre">		</span>// 向压缩文件中输出数据  
             <span style="white-space:pre">		</span>byte[] buffer = new byte[512];  
             <span style="white-space:pre">		</span>//向压缩包中第一个文件写入数据
             <span style="white-space:pre">		</span>while ((number = fin.read(buffer)) != -1) { 
                 <span style="white-space:pre">		</span>zipOut.write(buffer, 0, number);
             <span style="white-space:pre">		</span>}  
             <span style="white-space:pre">		</span>//向压缩包中第二个文件写入数据
             <span style="white-space:pre">		</span>zipOut.putNextEntry(new ZipEntry(bmp.getName()));  
             <span style="white-space:pre">		</span>while ((number = bin.read(buffer)) != -1) {  
                <span style="white-space:pre">		</span> zipOut.write(buffer, 0, number);  
             <span style="white-space:pre">		</span>}
             <span style="white-space:pre">		</span>zipOut.close();  
             <span style="white-space:pre">		</span>out.close();  
             <span style="white-space:pre">		</span>fin.close(); 
             <span style="white-space:pre">		</span>bin.close(); 
         <span style="white-space:pre">	</span>}

	} catch (FileNotFoundException e) {
			e.printStackTrace();
	} catch (IOException e) {
		e.printStackTrace();
	}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值