㈠ java Zip解析乱码问题
debug一下,看看filepath输出什么,看看下面这个代码
import java.io.*;
import java.util.zip.*;
public class Zip {
static final int BUFFER = 2048;
static boolean flag = false;
public static void main(String args[])throws IOException{
File file= new File("D:/Temp");
ZipSubdirectory(file);
FileInputStream file1 = new FileInputStream(ZipSubdirectory(file));
System.out.println(file1.toString());
}
//ZipSubdirectory函数将一个指定目录(包括它子目录)压缩成一个同名压缩文件(这里称为"ORIGIN")
public static File ZipSubdirectory(File myDir)throws IOException{
//创建缓冲输入流BufferedInputStream
BufferedInputStream origin = null;
//创建ZipOutputStream对象,将向它传递希望写入文件的输出流
File zipFile=new File("D:/"+myDir.getName()+".zip");
FileOutputStream fos=new FileOutputStream(zipFile);
ZipOutputStream out=new ZipOutputStream(new BufferedOutputStream(fos,BUFFER));
//dirContents[]获取当前目录(myDir)所有文件对象(包括子目录名)
File dirContents[]=myDir.listFiles();
//创建临时文件tempFile,使用后删除
File tempFile=null;
try{
//处理当前目录所有文件对象,包括子目录
for(int i=0;i < dirContents.length; i++){
//使用递归方法将当前目录的子目录转成一个ZIP文件,并作为一个ENTRY加进"ORIGIN"
if(dirContents[i].isDirectory()){
tempFile = ZipSubdirectory(dirContents[i]);
flag=true;
}
//如果当前文件不是子目录
else {
tempFile=dirContents[i];
//flag标记tempFile是否由子目录压缩成的ZIP文件
flag = false;
}
System.out.println("Compress file: "+tempFile.getName());
FileInputStream fis = new FileInputStream(tempFile);
origin = new BufferedInputStream(fis,BUFFER);
//为被读取的文件创建压缩条目
ZipEntry entry = new ZipEntry(tempFile.getName());
byte data[]= new byte[BUFFER];
int count;
//在向ZIP输出流写入数据之前,必须首先使用out.putNextEntry(entry); 方法安置压缩条目对象
out.putNextEntry(entry);
//向ZIP 文件写入数据
while((count=origin.read(data,0,BUFFER))!=-1){
out.write(data,0,count);
}
//tempFile是临时生成的ZIP文件,删除它
if(flag==true){
flag = tempFile.delete();
System.out.println("Delete file:"+tempFile.getName()+flag);
}
//关闭输入流
origin.close();
}
out.close();
} catch(Exception e){
System.out.println(e);
}
//递归返回
return zipFile;
}
}
来自
㈡ java用apache的ZipEntry压缩文件名为中文的word文件时,文件名乱码
对于输出zip文件的ZipOutputStream对象设置一下编码:
ZipOutputStreamout=newZipOutputStream(newFileOutputStream(
zipFileName));
//设置filenames的编码
out.setEncoding("UTF-8");
通常linux下使用utf8进行文件命名编码,而windows下采用gbk,根据你的系统情况而定
可参考下api:
http://www.jajakarta.org/ant/ant-1.6.1/docs/ja/manual/api/org/apache/tools/zip/ZipOutputStream.html
㈢ java压缩zip文件中文乱码问题
我以前也遇到过这个问题,最后发现java自带的zip压缩没办法解决中文名乱码的问题
你可以使用apache ant的zip类(package: org.apache.tools.zip)来解决这个问题。
㈣ 请大神帮忙解决一个用java解压缩一个zip压缩格式字节流中文内容乱码问题!
这个问题我有点印象,好像是包的问题。好像不能用zip的那个,换另一个包就好了。具体我也不记得了
㈤ java压缩中文zip,系统winrar解压改中文zip会出现乱码
建议 使用 apache ant 工具包来做压缩,能完美的解决中文乱码问题
㈥ 用java直接读取zip类型的文件时中文乱码问题怎么解决
1.一般是软件程序解码错误。如浏览器把GBK码当成是Big5码显示,或电子邮件程序把对方传来的邮件错误解码。如果在发送时编码错误,收件者的电邮程序是不能解码的,需要寄件者的电邮程序重新编码再寄。
2.字体档案(font file)不对。
3.来源编码错误,或文件受到破坏。
4.一种语言版本的操作系统安装了另外一种语言版本的应用程序,或者应用程序安装的升级补丁的语言版本与应用程序原来安装的语言版本不一致。
5.早期单字节的应用程序在打开双字节语言的文件时不能正确识别文字的分割,在换行的地方把一个字从中分成两段,导致紧接在后面的整个一行全部都是乱码。
6.低版本的应用程序不能识别高版本的程序创建的文件。
7.由于TXD等修改文件出现内部冲突,一些修改游戏的MOD(modification)CLEO、IV补丁、真实补丁、技能补丁、升级补丁和CCI人物补丁等游戏修改软件的“Readme”“必看!”等阅读文件会出现乱码。
㈦ 如何解决java程序解压含有中文名的zip压缩包出现乱码
上次利用java自动的java.util.zip.ZipEntry和�0�2java.util.zip.ZipFile来解压zip文件,今天发现程序在读取解压文件时居然报了空指针异常,debug程序后发现时读取不到文件,产生原先是zip压缩文件中含有中文的名称,读取文件名为乱码,
报找不到文件名,所以报了空指针,想到ant构建文件也有这个功能,换了apache的ant.jar居然解决了中文的问题。
备份下。
�0�2import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Enumeration;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;/*** 读取zip压缩文件中文本的内容
* @author fish*/public class ReadZip {
public static void main(String args[]) {try {String fileName = "D:/workspace/java/src/ReadZip.zip";
//构造ZipFile
ZipFile zf = new ZipFile(new File(fileName));
//返回 ZIP file entries的枚举.
Enumeration<? extends ZipEntry entries = zf.getEntries();
while (entries.hasMoreElements()) {
ZipEntry ze = entries.nextElement();
System.out.println("name:"+ze.getName());
long size = ze.getSize();
if (size 0) {
System.out.println("Length is " + size);
BufferedReader br = new BufferedReader(
new InputStreamReader(zf.getInputStream(ze)));
String line;
while ((line = br.readLine()) != null) {
㈧ Java zip 解压文件中文 乱码问题.. 跪求大神解答
字符格式需要进行转码了
㈨ 请问用java编写一个压缩程序,怎样解决压缩文件zip里的文件名乱码问题!
没做过压缩程序,JAVA里面的字符串使用的编码为unicode,ZIP文件里面用的应该是本地编码(中文操作系统用的是GB2312)。
你可以尝试着用类似这样的语句:String str = ( otherStr.getBytes("GB2312") );
祝好运。
㈩ 用好压软件压缩文件为zip格式,在用JAVA的zip4j包进行解压,但是解压后出现乱码,怎么事
按照你说的我没有乱码,把压缩文件贴出来瞧瞧。