社区
Java SE
帖子详情
java zip压缩解决中文乱码
aking21alinjuju
2009-02-12 09:49:46
问题是这样的:
用windows的zip压缩以后,传到linux服务器上,如果文件名含有中文,解压的时候会出现中文乱码。
我想的是自己用java写个zip压缩程序,在压缩的时候对编码进行一次转换,不知道这样可行不可行,有更好的方法吗?
由于以前没接触过压缩程序,写起来有点吃力,不知道有没有源码供参考,感激。。。。。
...全文
4069
7
打赏
收藏
java zip压缩解决中文乱码
问题是这样的: 用windows的zip压缩以后,传到linux服务器上,如果文件名含有中文,解压的时候会出现中文乱码。 我想的是自己用java写个zip压缩程序,在压缩的时候对编码进行一次转换,不知道这样可行不可行,有更好的方法吗? 由于以前没接触过压缩程序,写起来有点吃力,不知道有没有源码供参考,感激。。。。。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
itbigboy
2009-06-11
打赏
举报
回复
http://www.cenqua.com/fisheye/demo/viewrep/ant/src/main/org/apache/tools
aking21alinjuju
2009-03-02
打赏
举报
回复
谢谢了,有apache的发个给我看看哈,邮箱:zhan.huijing@dcfs.digitalchina.com
墨水鱼
2009-02-13
打赏
举报
回复
java.util.zip包下的东西来压缩容易引起中文乱码的问题,可以使用apache ant包里的zip压缩类,和java.util.zip方法一样
Looking_Glass
2009-02-12
打赏
举报
回复
试下我这个类能支持中文压缩!能否满足你的要求!不过要用到Opache的ant.jar,网上很多地方都可以下!如果无我发给你!
package test1230;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipException;
import java.util.zip.ZipInputStream;
public class ZipFileUtil {
/*
* 能支持中文的压缩
* 参数base 开始为""
* first 开始为true
*/
public static void zip(org.apache.tools.zip.ZipOutputStream out, File f, String base,boolean first) throws Exception {
if(first){
if(f.isDirectory()){
out.putNextEntry(new org.apache.tools.zip.ZipEntry("/"));
base = base +f.getName();
first = false;
}
else
base = f.getName();
}
if (f.isDirectory()) {
File[] fl = f.listFiles();
base = base +"/";
for (int i = 0; i < fl.length; i++) {
zip(out, fl[i], base + fl[i].getName(),first);
}
}else {
out.putNextEntry(new org.apache.tools.zip.ZipEntry(base));
FileInputStream in = new FileInputStream(f);
int b;
System.out.println(base);
while ( (b = in.read()) != -1) {
out.write(b);
}
in.close();
}
}
/*
* 解压文件
* unZip为解压路径
*/
public static void unZipFileByOpache(org.apache.tools.zip.ZipFile zipFile,String unZipRoot) throws Exception, IOException{
java.util.Enumeration e = zipFile.getEntries();
org.apache.tools.zip.ZipEntry zipEntry;
while(e.hasMoreElements()){
zipEntry = (org.apache.tools.zip.ZipEntry)e.nextElement();
InputStream fis = zipFile.getInputStream(zipEntry);
if(zipEntry.isDirectory()){
}
else{
File file = new File(unZipRoot+File.separator+zipEntry.getName());
File parentFile = file.getParentFile();
parentFile.mkdirs();
FileOutputStream fos = new FileOutputStream(file);
byte[] b = new byte[1024];
int len;
while((len=fis.read(b, 0, b.length))!=-1){
fos.write(b, 0, len);
}
fos.close();
fis.close();
}
}
}
public static void ZipFile(String zipFileName,String inputFileName) throws Exception{
org.apache.tools.zip.ZipOutputStream out = new org.apache.tools.zip.ZipOutputStream(new FileOutputStream(zipFileName));
File inputFile = new File(inputFileName);
zip(out, inputFile, "",true);
System.out.println("zip done");
out.close();
}
public static void unZipFile(String unZipFileName,String unZipPath) throws Exception{
org.apache.tools.zip.ZipFile zipFile = new org.apache.tools.zip.ZipFile(unZipFileName);
unZipFileByOpache(zipFile, unZipPath);
System.out.println("unZip Ok");
}
public static void main(String[] args) throws Exception {
ZipFile("d:/testfile.zip","d:/testfile");
// unZipFile("d:/javaFile.zip","e:/");
}
}
Looking_Glass
2009-02-12
打赏
举报
回复
试下我这个类能支持中文压缩!能否满足你的要求!不过要用到Opache的ant.jar,网上很多地方都可以下!如果无我发给你!
package test1230;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipException;
import java.util.zip.ZipInputStream;
public class ZipFileUtil {
/*
* 能支持中文的压缩
* 参数base 开始为""
* first 开始为true
*/
public static void zip(org.apache.tools.zip.ZipOutputStream out, File f, String base,boolean first) throws Exception {
if(first){
if(f.isDirectory()){
out.putNextEntry(new org.apache.tools.zip.ZipEntry("/"));
base = base +f.getName();
first = false;
}
else
base = f.getName();
}
if (f.isDirectory()) {
File[] fl = f.listFiles();
base = base +"/";
for (int i = 0; i < fl.length; i++) {
zip(out, fl[i], base + fl[i].getName(),first);
}
}else {
out.putNextEntry(new org.apache.tools.zip.ZipEntry(base));
FileInputStream in = new FileInputStream(f);
int b;
System.out.println(base);
while ( (b = in.read()) != -1) {
out.write(b);
}
in.close();
}
}
/*
* 解压文件
* unZip为解压路径
*/
public static void unZipFileByOpache(org.apache.tools.zip.ZipFile zipFile,String unZipRoot) throws Exception, IOException{
java.util.Enumeration e = zipFile.getEntries();
org.apache.tools.zip.ZipEntry zipEntry;
while(e.hasMoreElements()){
zipEntry = (org.apache.tools.zip.ZipEntry)e.nextElement();
InputStream fis = zipFile.getInputStream(zipEntry);
if(zipEntry.isDirectory()){
}
else{
File file = new File(unZipRoot+File.separator+zipEntry.getName());
File parentFile = file.getParentFile();
parentFile.mkdirs();
FileOutputStream fos = new FileOutputStream(file);
byte[] b = new byte[1024];
int len;
while((len=fis.read(b, 0, b.length))!=-1){
fos.write(b, 0, len);
}
fos.close();
fis.close();
}
}
}
public static void ZipFile(String zipFileName,String inputFileName) throws Exception{
org.apache.tools.zip.ZipOutputStream out = new org.apache.tools.zip.ZipOutputStream(new FileOutputStream(zipFileName));
File inputFile = new File(inputFileName);
zip(out, inputFile, "",true);
System.out.println("zip done");
out.close();
}
public static void unZipFile(String unZipFileName,String unZipPath) throws Exception{
org.apache.tools.zip.ZipFile zipFile = new org.apache.tools.zip.ZipFile(unZipFileName);
unZipFileByOpache(zipFile, unZipPath);
System.out.println("unZip Ok");
}
public static void main(String[] args) throws Exception {
ZipFile("d:/testfile.zip","d:/testfile");
// unZipFile("d:/javaFile.zip","e:/");
}
}
huhk
2009-02-12
打赏
举报
回复
你试试压缩和解压都用java。
java
压缩
zip
文件
解决
中文乱码
问题
java
压缩
文件成
zip
实现无乱码 内置类与jar包
java
zip
压缩
解压工具
解决
中文乱码
问题
使用
java
压缩
也解压
zip
文件方法,
解决
中文乱码
问题。使用
java
自带的
压缩
解压算法,会出现
中文乱码
问题。使用apache io的
zip
包,有效
解决
该问题。Ant的
压缩
解压,也是使用该类。
java
zip
解压
中文乱码
问题
网上很多描述
java
解压
中文乱码
的问题,很多描述不全.由于工作需要整理出一个完整版.简单实用.下载后请从
Zip
Util.
java
的main方法开始,一目了然. public static void main(String args[]) { new
Zip
Util().un
Zip
("E:\\aaaa\\中文.
zip
","E:\\aaaa\\中文","GBK"); } 实例: 将E:\\aaaa\\中文.
zip
解压到E:\\aaaa\\中文目录下
java
android
zip
解
压缩
(
解决
压缩
中文乱码
问题)
解决
android 自带
zip
解
压缩
中文乱码
的问题,导入
zip
.jar即可使用(与系统提供的用法相同),大小仅24k
解决
java
压缩
zip
文件时的
中文乱码
问题(包含jar包和工具类)
解决
java
压缩
zip
文件时的
中文乱码
问题 实现:
java
压缩
文件成
zip
实现无乱码。 包括:写好的工具类与jar包。 使用方法:导入ant.jar包,调用CompressExcelOperate中的方法,即可实现
压缩
文件,并保证没有
中文乱码
。
Java SE
62,615
社区成员
307,307
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章