当前位置:  技术问答>java相关

zip解压,中文文件名问题

    来源: 互联网  发布时间:2015-11-15

    本文导语:  如题。 | 今天也遇到这个问题,好不容易解决了,不过还是不爽,因为修改了相关类,而不能自己另写类。方法如下: 1.将/jdk/jre/lib/rt.jar解包 反编译ZipInputStream.class 修改getUTF8String函数为:  ...

如题。

|
今天也遇到这个问题,好不容易解决了,不过还是不爽,因为修改了相关类,而不能自己另写类。方法如下:
1.将/jdk/jre/lib/rt.jar解包
反编译ZipInputStream.class
修改getUTF8String函数为:
    private static String getUTF8String(byte b[], int off, int len)
    {
        String s = "";
        try
        {
            s = new String(b, off, len, "GBK");
        }
        catch(Exception e)
        {
            System.out.println(e.toString());
        }
        return s;
    }
编译,打包。
2.自己写的解包的类:

import java.io.*; 
import java.util.*; 
import java.util.zip.*; 
import sun.io.*; 

public class UnZip 

public static void main(String filename) 

System.out.println(filename);
File infile = new File(filename); 

try{ 
//检查是否是zip文件 
ZipFile zip = new ZipFile(infile); 
zip.close(); 

//建立与目标文件的输入连接 
ZipInputStream in = new ZipInputStream(new FileInputStream(infile)); 
ZipEntry file = in.getNextEntry(); 

int i =infile.getAbsolutePath().lastIndexOf('.'); 
String dirname = new String(); 
if ( i != -1 ) 
dirname = infile.getAbsolutePath().substring(0,i); 
else 
dirname = infile.getAbsolutePath(); 
File newdir = new File(dirname); 
newdir.mkdir(); 

byte[] c = new byte[1024]; 
int len; 
int slen; 

while (file != null){ 

i = file.getName().replace('/','\').lastIndexOf('\'); 
if ( i != -1 ){ 
File dirs = new File(dirname+File.separator+file.getName().replace('/','\').substring(0,i)); 
dirs.mkdirs(); 
dirs = null; 


System.out.print("extract "+file.getName().replace('/','\')+" ........ "); 

if (file.isDirectory()){ 
File dirs = new File(file.getName().replace('/','\')); 
dirs.mkdir(); 
dirs = null; 

else{
FileOutputStream out = new FileOutputStream(dirname+File.separator+file.getName().replace('/','\')); 
while((slen = in.read(c,0,c.length)) != -1) 
out.write(c,0,slen); 
out.close(); 

System.out.print("o.k.n"); 
file = in.getNextEntry(); 

in.close(); 
}catch(ZipException zipe){ 
System.out.println(infile.getName() + "不是一个zip文件!"); 
}catch(IOException ioe){ 
System.out.println("读取"+filename+"时错误!"); 
}catch(Exception i){ 
System.out.println("over"); 






希望能解决你的问题,大家探讨一下更好的解决办法。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux下如何解压zip文件
  • 请问:从zip中解压出单个文件的库
  • linux下的zip文件怎么解压啊?
  • 请问在Solaris下解压加密过的zip文件(在线急用)
  • 关于标准.zip文件解压的问题
  • 菜鸟问题:请教redhat9下如何解压.rar和.zip的文件?
  • 小问题,安装jdk目录下的src.zip是否需要解压?
  • 请问在shell下用unzip命令的哪个参数可以按我的要求解压zip文件?
  • redhat9.0下用什么解压.zip文件的?
  • linux下如何解压zip文件,谢谢。
  • 如何解压Linux下的.zip文件?
  • ftp上的zip文件解压问题
  • zip文件在linux下该如何解压?
  • 到底在linux那里是用什么命令解压zip文档的?各位高手告诉我!!
  • centos 下解压zip格式文件的问题
  • *.tar.zip类型的文件在AIX系统下如何解压
  • php 解压rar文件及zip文件的方法
  • jakarta-tomcat.zip 与 JDK1.3.1.exe解压后需要安装吗?
  • 使用java基础类实现zip压缩和zip解压工具类分享
  • C#中关于zip压缩解压帮助类的封装 附源码下载
  • java命名空间java.util.zip类zipfile的类成员方法: getinputstream定义及介绍
  • JS的ZIP压缩和解压缩工具 Zip.js
  • java命名空间java.util.zip类zipfile的类成员方法: size定义及介绍
  • Java 的 zip 开发包 ZIP4J
  • java命名空间java.util.zip类zipfile的类成员方法: entries定义及介绍
  • Linux下怎么用socket接收zip文件流?怎么把zip文件读成流?
  • java命名空间java.util.zip类zipfile的类成员方法: getname定义及介绍
  • 写入zip的麻烦--用zip包的看过来
  • java命名空间java.util.zip类zipentry的类成员方法: zipentry定义及介绍
  • php调用nginx的mod_zip模块打包ZIP文件
  • java命名空间java.util.zip类zipfile的类成员方法: close定义及介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3