java压缩----使用sun JDK压缩--中文的文件名会是乱码
经测试,文件名为中文的压缩完为乱码,测试过.txt 的文件类型,中文内容可以正常显示。
所以这种方案不可行。
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.commons.io.IOUtils;
import org.apache.commons.io.FileUtils;
/*** @author 压缩指定的目录以及解压指定的压缩文件(仅限ZIP格式).*/public class ZipUtils {/*** 将指定目录下的所有文件压缩并生成指定路径的压缩文件. 如果压缩文件的路径或父路径不存在, 将会自动创建.* * @param src* 将要进行压缩的目录* @param zip* 最终生成的压缩文件的路径*/public static void zip(File src, File zip) throws IOException {zip(src, FileUtils.openOutputStream(zip));}/*** 将指定目录下的所有文件压缩并将流写入指定的输出流中.* * @param src* 将要进行压缩的目录* @param out* 用于接收压缩产生的文件流的输出流*/public static void zip(File src, OutputStream out) throws IOException {zip(src, new ZipOutputStream(out));}/*** 将指定目录下的所有文件压缩并将流写入指定的ZIP输出流中.* * @param src* 将要进行压缩的目录* @param zout* 用于接收压缩产生的文件流的ZIP输出流*/public static void zip(File src, ZipOutputStream zout) throws IOException {try {doZip(src, zout, "");} finally {IOUtils.closeQuietly(zout);}}/*** 将指定的压缩文件解压到指定的目标目录下. 如果指定的目标目录不存在或其父路径不存在, 将会自动创建.* * @param zip* 将会解压的压缩文件* @param dest* 解压操作的目录目录*/public static void unzip(File zip, File dest) throws IOException {unzip(FileUtils.openInputStream(zip), dest);}/*** 将指定的输入流解压到指定的目标目录下.* * @param in* 将要解压的输入流* @param dest* 解压操作的目标目录*/public static void unzip(InputStream in, File dest) throws IOException {unzip(new ZipInputStream(in), dest);}/*** 将指定的ZIP输入流解压到指定的目标目录下.* * @param zin* 将要解压的ZIP输入流* @param dest* 解压操作的目标目录*/public static void unzip(ZipInputStream zin, File dest) throws IOException {try {doUnzip(zin, dest);} finally {IOUtils.closeQuietly(zin);}}/*** @param src 源文件目录或者文件* @param zout 输出的流* @param ns*/private static void doZip(File src, ZipOutputStream zout, String ns)throws IOException {for (File file : src.listFiles()) {String entryName = ns + file.getName();if (file.isDirectory()) {System.out.println("adding: {}"+entryName + "/");zout.putNextEntry(new ZipEntry(entryName));doZip(file, zout, entryName);} else {System.out.println("adding: {}"+ entryName);zout.putNextEntry(new ZipEntry(entryName));fillZip(FileUtils.openInputStream(file), zout);}}}/*** @param zin* @param dest*/private static void doUnzip(ZipInputStream zin, File dest)throws IOException {for (ZipEntry e; (e = zin.getNextEntry()) != null; zin.closeEntry()) {File file = new File(dest, e.getName());if (e.isDirectory()) {System.out.println(" creating: {}"+file.getName() + File.separator);FileUtils.forceMkdir(file);} else {System.out.println("inflating: {}"+file);flushZip(zin, FileUtils.openOutputStream(file));}}}/*** @param in* @param zout*/private static void fillZip(InputStream in, ZipOutputStream zout)throws IOException {try {IOUtils.copy(in, zout);} finally {IOUtils.closeQuietly(in);}}/*** @param zin* @param out*/private static void flushZip(ZipInputStream zin, OutputStream out)throws IOException {try {IOUtils.copy(zin, out);} finally {IOUtils.closeQuietly(out);}}/*** */private static Logger logger = LoggerFactory.getLogger(ZipUtils.class);public static void main(String[] args){try {ZipUtils.zip(new File("D:\\evidence\\20120712\\重生回到1997_2012071213114144\\言情小说吧_www.xs8.cn"), new File("D:\\evidence\\20120712\\重生回到1997_2012071213114144\\言情.zip"));} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
java压缩----使用sun JDK压缩--中文的文件名会是乱码相关推荐
- java压缩----使用ANT JDK压缩---解决中文问题
import java.io.File; import java.io.IOException; import org.apache.tools.ant.Project; import org.apa ...
- java压缩----使用ANT JDK压缩---只压缩选中目录的指定文件夹
写在前面的话:使用ANT中的压缩功能在很多文章中都有,但是只能压缩指定目录的全部文件或者文件夹,在项目中,经常有这样的需求:只压缩指定目录的部分文件夹, 用过ant.xml 的人都很容易想到 file ...
- java putnextentry_Java对zip格式压缩和解压缩
Java对zip格式压缩和解压缩 通过使用java的相关类可以实现对文件或文件夹的压缩,以及对压缩文件的解压. 1.1 ZIP和GZIP的区别 gzip是一种文件压缩工具(或该压缩工具产生的压缩文件格 ...
- Java导出多个excel压缩成zip下载
Java导出多个excel压缩成zip下载 maven <!--hutoos工具类根据需要可以导入不同的模块,我这里是导入全部的模块--><dependency><gro ...
- Java图片压缩及解决遇到压缩时出现黑底的问题
在项目中有个需求是将图片和其他文件合并,最后输出为一个文件,我在大佬们的帮助下找到合适的压缩工具类来实现压缩,并做如下总结: 方案一 package com.example.cn.service;im ...
- java压缩图片比例quality_Java实现的上传并压缩图片功能【可等比例压缩或原尺寸压缩】...
本文实例讲述了java实现的上传并压缩图片功能.分享给大家供大家参考,具体如下: 先看效果: 原图:1.33M 处理后:27.4kb 关键代码: package codeGenerate.util; ...
- 使用jdk压缩war包
首先安装jdk 压缩 ..../jdk/bin/jar -cvf file.war file 解压 ..../jdk/bin/jar -xvf file.war 转载于:https://www.cnb ...
- java图片的导出,并压缩
java图片的导出,并压缩 java 压缩包jar包使用的是commons-compress-1.6.jar /*** 导出图片* @param request* @param response*/@ ...
- java 解压到内存,Java GZip 基于内存实现压缩和解压的方法
欢迎大家关注本博,同时欢迎大家评论交流,可以给个赞哦!!! GZip是常用的无损压缩算法实现,在Linux中较为常见,像我们在Linux安装软件时,基本都是.tar.gz格式..tar.gz格式文件需 ...
最新文章
- tomcat配置访问项目时不需要加项目名称
- 无锡初一计算机试题,2015年无锡市初中信息技术考查选择题.doc
- 简单Linux C线程池
- Spark详解(二):Spark完全分布式环境搭建
- 关于linkedin的network的观察和自己的职业道路的追求
- 软件需求说明书 概要设计说明书 项目开发计划 详细设计说明书 模版
- 【CodeForces - 616C】The Labyrinth(bfs,并查集,STLset)
- 【Git】GitHub主页从Dark调回Light的方法
- 单目摄像机测距(python+opencv)(转载)
- DAG镶嵌模型+原始路径打印
- mybatis结果的组装(springboot)
- 计算机物联网软件工程,关于计算机物联网的应用分析
- Java开发 明华usbkey_UsbKey开发文档
- 为什么说人间值得,因为有这么多美好让我们留恋。金秋十月初九于指南山村 。...
- linux ubi 分区,Linux ubi子系统原理分析
- post请求参数校验工具param-validate
- 制作SD卡系统镜像img文件
- Oracle Report開發(1)--Oracle Report Builder
- 【浙江大学】一个开源的知识图谱表示学习框架
- Ubuntu修改只能用Guest登录
热门文章
- [USACO06NOV]玉米田Corn Fields(动态规划,状态压缩)
- 排球积分程序(三)——模型类的设计
- powershell
- 当程序开发人员开始抛弃技术时,是否意味着噩梦的开始?抛弃了SQL Server 2000才发现客户的简单问题真的很难解决...
- qt 程序windows 上发布
- Linux下C语言的文件操作
- Sqlite 错误码
- Windows 7/8/8.1 硬盘安装法实现 ubuntu 14.04 双系统
- PL/SQL DEVELOPER 使用的一些技巧
- 阶段总结——201511