前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Atitit. 拉开拉链zip文件 最佳实践实施 java c# .net php

Atitit. 拉开拉链zip文件 最佳实践实施 java c# .net php

作者头像
全栈程序员站长
发布2022-07-05 21:51:30
3890
发布2022-07-05 21:51:30
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

Atitit. 拉开拉链zip文件 的实现最佳实践 java c# .net php

1. Jdk zip 跟apache ant zip 1

2. Apache Ant包进行ZIP文件压缩,upzip 大概流程.. 1

3. 读文件名ok,可是cant读取到input说NPE.. 2

4. Ant1.8.2.jar 2

5. #—具体code 2

6. 參考 4

1. Jdk zip 跟apache ant zip

以下实现的功能是zip文件里的图像文件解压到当前文件夹下。用jdk自带的处理zip文件的代码处理的。可是不能处理中文名称的文件。要不然就会出错。

以下是用的apache的zip文件处理包进行处理的,能够处理中文名称的文件,功能跟上面的一样。

使用apache ant version1.7的tools.zip来解压zip文件,解决中文问题

1.7 blow的好像还是不支持中文..

作者:: 老哇的爪子 Attilax 艾龙, EMAIL:1466519819@qq.com

转载请注明来源: http://blog.csdn.net/attilax

2. Apache Ant包进行ZIP文件压缩,upzip 大概流程..

很多年前就遇到过这样的业务,对ZIP标准压缩文件解压。

之前写的操作类如今找不到了,近期项目中又要处理这样的业务,所以又一次写了一个。

Java提供 了处理ZIP包的API。可是对中文支持不是非常好。所以我直接用Apache Ant里的ZIP操作API来进行处理。ANT的API攻克了中文支持问题。并且用起来也非常方便。

下面是操作类。

下面的类仅仅是用到Apache的一小部分功能。详细很多其它的API,请參考文档。在此不多说明了。

* 在项目中导入Apache的ant.jar包到Lib中

3. 读文件名ok,可是cant读取到input说NPE..

Cause:::encode问题.. 默认好像是utf8..but 实际是gbk…

org.apache.tools.zip.ZipFile zipFile =new ZipFile(zipFileName, “gbk”);

二、在unZipFiles方法中直接使用ZipFile zip = new ZipFile(zipFile); 解压缩时发现中文仍然乱码,改成ZipFile zip = new ZipFile(zipFile,“GBK”); 后中文正常了。可能和项目详细配置与执行环境有关吧。

4. Ant1.8.2.jar

5. #—具体code

/**

* 解压静态方法

* @param zipFileName

* @param outputDirectory

* @throws Exception

*/

public static void extract(String zipFileName,String outputDirectory,String encode) throws Exception{

try {

// = “utf-8”;

org.apache.tools.zip.ZipFile zipFile =new ZipFile(zipFileName, encode);

//new org.apache.tools.zip.ZipFile(zipFileName);

java.util.Enumeration e = zipFile.getEntries();

org.apache.tools.zip.ZipEntry zipEntry = null;

while (e.hasMoreElements()){

zipEntry = (ZipEntry)e.nextElement();

System.out.println(“unziping “+zipEntry.getName());

try {

upzip(outputDirectory, zipFile, zipEntry);

} catch (zipEntryIsNullEx e2) {

System.out.println(e2.getMessage());

System.out.println(“————“);

}

}

}

catch (Exception ex){

System.out.println(“解压文件异常”+ex.getMessage());

ex.printStackTrace();

}

}

private static void upzip(String outputDirectory, org.apache.tools.zip.ZipFile zipFile, org.apache.tools.zip.ZipEntry zipEntry) throws IOException, ZipException, FileNotFoundException, zipEntryIsNullEx {

if (zipEntry.isDirectory()){

String name=zipEntry.getName();

name=name.substring(0,name.length()–1);// for del fesyegeor

mkDirs(outputDirectory+File.separator+name);

//System.out.println(“创建文件夹:”+outputDirectory+File.separator+name);

}else{ //file entry o9o

String name=zipEntry.getName();

String dir = name.substring(0,name.lastIndexOf(“/”));

mkDirs(outputDirectory+File.separator+dir);

//System.out.println(“创建文件:”+outputDirectory+File.separator+name);

File f=new File(outputDirectory+File.separator+zipEntry.getName());

f.createNewFile();

InputStream in = zipFile.getInputStream(zipEntry);

if(in==null)

throw new zipEntryIsNullEx(“zipEntryIsNullEx:”+name);

FileOutputStream out=new FileOutputStream(f);

int c;

byte[] by=new byte[1024];

while((c=in.read(by)) != –1){

out.write(by,0,c);

}

out.close();

in.close();

}

}

6. 參考

Apache Ant包进行ZIP文件压缩 – 抹去浮华,沉淀深度 – ITeye技术站点.htm

版权声明:本文博客原创文章。博客,未经同意,不得转载。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/117535.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年1月4,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. Jdk zip 跟apache ant zip
  • 2. Apache Ant包进行ZIP文件压缩,upzip 大概流程..
  • 3. 读文件名ok,可是cant读取到input说NPE..
  • 4. Ant1.8.2.jar
  • 5. #—具体code
  • 6. 參考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档