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

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

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

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

 

 

 

1. Jdk zip apache ant zip 1

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

3. 读文件名ok,可是cant读取到inputNPE.. 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来进行处理。ANTAPI攻克了中文支持问题。并且用起来也非常方便。

下面是操作类。

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

* 在项目中导入Apacheant.jar包到Lib

 

 

 

3. 读文件名ok,可是cant读取到inputNPE..

 

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 encodethrows 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 zipEntrythrows  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

基于apache zip包的压缩和解压缩程序_Crusoe_新浪博客

 

我要啦免费统计

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • UNIX命令

    UNIX命令 一、UNIX命令格式1、UNIX命令提示符   在命令行下,操作系统会显示一提示符,提示用户在此提示符后可以输入一行命令。不同的Shell有不同的缺省提示符:       BShell和KShell的缺省提示符为”$”;       CShell的缺省提示符为”%”;       但当以root用户登录时,系统提示符统一缺省为”#”。用户可以更改自己的缺省Shell和提

  • pycharm搜索文件夹中的关键字「建议收藏」

    pycharm搜索文件夹中的关键字「建议收藏」pycharm搜索文件夹中的关键字使用Ctrl+H

  • Pycharm安装使用TensorFlow[通俗易懂]

    Pycharm安装使用TensorFlow[通俗易懂]众多深度学习的初学者都会面临环境搭建的问题,本文根据亲身经历说明几个关键步骤:1.安装Pycharm,其中社区版免费,可以直接去pycharm官网下载安装https://www.jetbrains.com/pycharm/download/2.安装Anaconda,初学者不用急于安装最新版本的Anaconda(尤其是硬件设备并非最新的初学者,因为我注意到很多初学者的设备就是自己的笔记本或者台式机,一些并没有独立显卡,或者是NVIDIA730之类的台式机显卡,无法使用最新的深度学习包,以及一些CUD

  • linux查看java程序线程命令_linux查找字符串命令

    linux查看java程序线程命令_linux查找字符串命令在linux系统下可以通过命令查看进程,那么具体是那个命令呢?下面由学习啦小编为大家整理了linux查看进程的命令,希望对大家有帮助!一、linux查看进程的命令有ps、pstree、pgrep等1、ps显示进程信息,参数可省略-aux以BSD风格显示进程常用-efH以SystemV风格显示进程-e,-A显示所有进程a显示终端上所有用户的进程x显示无终端进程u显示详细信息f…

  • matlab画图函数 增加横纵坐标名称_matlab函数绘图

    matlab画图函数 增加横纵坐标名称_matlab函数绘图1.多子图figuresubplot(2,1,1);plot(data1);title(‘原始信号’);%标题subplot(2,1,2);plot(data1_rebuild);title(‘去噪声后信号’);2.多条信号figureplot(data1,’-r’);holdonplot(data1_rebuild,’-b’);legend(‘原始信号’,’去噪后信…

  • jps命令的使用方法

    jps(JavaVirtualMachineProcessStatusTool)是java提供的一个显示当前所有java进程pid的命令,简单实用,非常适合在linux/unix平台上简单察看当前java进程的一些简单情况。很多人都是用过unix系统里的ps命令,这个命令主要是用来显示当前系统的进程情况,有哪些进程以及进程id。jps也是一样,它的作用是显示当前系统的java进程情况…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号