- 浏览: 733010 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
lingsuch:
Android网络连接判断与处理 -
月光照着我:
写的不错,作为笔记了
Android中LayoutInflater的使用 -
智博王锋:
好文章是要顶的!
Android中LayoutInflater的使用 -
云南白药:
...
Android中LayoutInflater的使用 -
万新one:
理解了许多。解释的不错。3Q.
Android中LayoutInflater的使用
/* 调用org.apache.tools.zip实现压缩。 夜可以使用java.util.zip不过如果是中文的话, 解压缩的时候文件名字会是乱码。原因是解压缩软件的编码格式跟 java.util.zip.ZipInputStream的编码字符集不同 java.util.zip.ZipInputStream的字符集固定是UTF-8 */ import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import org.apache.tools.zip.*; public class ZipCompress { /** 参数一:需要压缩的文件或文件夹路径,参数二:压缩后的文件名 */ public void zip(String inputFile, String zipFileName) { zip(new File(inputFile), zipFileName); } /** 参数一:需要压缩的File对象,参数二:压缩后的文件名 */ public void zip(File inputFile, String zipFileName) { try { ZipOutputStream zOut = new ZipOutputStream(new FileOutputStream( new String(zipFileName.getBytes("gb2312")))); System.out.println("压缩-->开始"); zip(zOut, inputFile, ""); System.out.println("压缩-->结束"); zOut.close(); } catch (Exception e) { e.printStackTrace(); } } /** 参数一:压缩输出流对象(此流用于写入数据并生成文件),参数二:需要压缩的File对象,参数三:根目录,即压缩包中的文件夹目录 */ public void zip(ZipOutputStream zOut, File file, String base) { try { System.out.println("正在压缩-->" + file.getName()); if (file.isDirectory()) { File[] listFiles = file.listFiles(); /* * 此处解决压缩未端数据不正确,这是判断当前是什么系统,普遍是Windows所以在这里就不注释不做此判断. if * (System.getProperty("os.name").startsWith("Windows")) { base = * base.length() == 0 ? "" : base + "\\"; out.putNextEntry(new * ZipEntry(base)); } else { base = base.length() == 0 ? "" : * base + "/"; out.putNextEntry(new ZipEntry(base)); } * 一般来说用"/"符号来分割出文件与文件夹是没有问题的 */ zOut.putNextEntry(new ZipEntry(base + "/")); base = base.length() == 0 ? "" : base + "/"; for (int i = 0; i < listFiles.length; i++) { zip(zOut, listFiles[i], base + listFiles[i].getName()); // System.out.println(new // String(fl[i].getName().getBytes("gb2312"))); } } else { if (base == "") { base = file.getName(); } zOut.putNextEntry(new ZipEntry(base)); System.out.println(file.getPath() + "," + base); FileInputStream in = new FileInputStream(file); int len; while ((len = in.read()) != -1) zOut.write(len); in.close(); } } catch (Exception e) { e.printStackTrace(); } } private void createDirectory(String directory, String subDirectory) { String dir[]; File fl = new File(directory); try { if (subDirectory == "" && fl.exists() != true) fl.mkdir(); else if (subDirectory != "") { dir = subDirectory.replace('\\', '/').split("/"); for (int i = 0; i < dir.length; i++) { File subFile = new File(directory + File.separator + dir[i]); if (subFile.exists() == false) subFile.mkdir(); directory += File.separator + dir[i]; } } } catch (Exception ex) { System.out.println(ex.getMessage()); } } public void unZip(String zipFileName, String outputDirectory) { try { ZipFile zipFile = new ZipFile(zipFileName); java.util.Enumeration e = zipFile.getEntries(); ZipEntry zipEntry = null; createDirectory(outputDirectory, ""); while (e.hasMoreElements()) { zipEntry = (ZipEntry) e.nextElement(); System.out.println("正在解压: " + zipEntry.getName()); String name = null; if (zipEntry.isDirectory()) { name = zipEntry.getName(); name = name.substring(0, name.length() - 1); File f = new File(outputDirectory + File.separator + name); f.mkdir(); System.out.println("创建目录:" + outputDirectory + File.separator + name); } else { String fileName = zipEntry.getName(); fileName = fileName.replace('\\', '/'); // System.out.println("测试文件1:" +fileName); if (fileName.indexOf("/") != -1) { createDirectory(outputDirectory, fileName.substring(0, fileName.lastIndexOf("/"))); fileName = fileName.substring( fileName.lastIndexOf("/") + 1, fileName .length()); } File f = new File(outputDirectory + File.separator + zipEntry.getName()); f.createNewFile(); InputStream in = zipFile.getInputStream(zipEntry); FileOutputStream out = new FileOutputStream(f); byte[] by = new byte[1024]; int c; while ((c = in.read(by)) != -1) { out.write(by, 0, c); } out.close(); in.close(); } } // 删除文件不能在这里删,因为文件正在使用,应在上传那处删 // 解压后,删除压缩文件 // File zipFileToDel = new File(zipFileName); // zipFileToDel.delete(); // System.out.println("正在删除文件:"+ zipFileToDel.getCanonicalPath()); // //删除解压后的那一层目录 // delALayerDir(zipFileName, outputDirectory); } catch (Exception ex) { System.out.println(ex.getMessage()); } } /** * 删掉一层目录 * * @param zipFileName * @param outputDirectory */ public void delALayerDir(String zipFileName, String outputDirectory) { String[] dir = zipFileName.replace('\\', '/').split("/"); String fileFullName = dir[dir.length - 1]; // 得到aa.zip int pos = -1; pos = fileFullName.indexOf("."); String fileName = fileFullName.substring(0, pos); // 得到aa String sourceDir = outputDirectory + File.separator + fileName; try { copyFile(new File(outputDirectory), new File(sourceDir), new File( sourceDir)); deleteSourceBaseDir(new File(sourceDir)); } catch (Exception e) { e.printStackTrace(); } } /** * 将sourceDir目录的文件全部copy到destDir中去 */ public void copyFile(File destDir, File sourceBaseDir, File sourceDir) throws Exception { File[] lists = sourceDir.listFiles(); if (lists == null) return; for (int i = 0; i < lists.length; i++) { File f = lists[i]; if (f.isFile()) { FileInputStream fis = new FileInputStream(f); String content = ""; String sourceBasePath = sourceBaseDir.getCanonicalPath(); String fPath = f.getCanonicalPath(); String drPath = destDir + fPath.substring(fPath.indexOf(sourceBasePath) + sourceBasePath.length()); FileOutputStream fos = new FileOutputStream(drPath); byte[] b = new byte[2048]; while (fis.read(b) != -1) { if (content != null) content += new String(b); else content = new String(b); b = new byte[2048]; } content = content.trim(); fis.close(); fos.write(content.getBytes()); fos.flush(); fos.close(); } else { // 先新建目录 new File(destDir + File.separator + f.getName()).mkdir(); copyFile(destDir, sourceBaseDir, f); // 递归调用 } } } /** * 将sourceDir目录的文件全部copy到destDir中去 */ public void deleteSourceBaseDir(File curFile) throws Exception { File[] lists = curFile.listFiles(); File parentFile = null; for (int i = 0; i < lists.length; i++) { File f = lists[i]; if (f.isFile()) { f.delete(); // 若它的父目录没有文件了,说明已经删完,应该删除父目录 parentFile = f.getParentFile(); if (parentFile.list().length == 0) parentFile.delete(); } else { deleteSourceBaseDir(f); // 递归调用 } } } public static void main(String[] args) { ZipCompress t = new ZipCompress(); // 这里是调用压缩的代码 // t.zip("d:\\me.7z", "d:\\test.jar"); // 这里是调用解压缩的代码 t.unZip("d:\\me.rar", "d:\\my"); } }
发表评论
-
Java序列化与反序列化
2012-09-20 08:39 1508在JAVA中,一个大的应用程序需要保存很多对象的时候,由于虚拟 ... -
Java实现的8大排序算法
2012-07-12 13:22 17028种排序之 ... -
Java基础之软引用、弱引用、虚引用
2012-06-18 10:02 11581、概述 在JDK1.2以前 ... -
Java中的String对象特性
2012-05-28 15:28 10891. 首先String不属于8种基本数据类型,String是一 ... -
java反射与内省(Introspector)
2012-03-17 16:06 1174一、java反射机制 JAVA反射机制是在运行状 ... -
ArrayList Vector LinkedLis的区别与用法及数据结构
2011-12-28 22:33 1706ArrayList 和Vector是采用数组方式存储数据,此数 ... -
Java实现后台按键事件监听(注册系统级热键)
2011-08-10 13:54 6039所谓系统级热键就是指一组快捷键,不论当前系统焦点在哪个程序中, ... -
Jocky混淆JAVA代码(保护你的JAVA项目)
2010-12-01 14:52 1941Jocky混淆JAVA代码(保护 ... -
Java将彩色图片转换为灰色图片
2010-08-06 11:26 4972import java.applet.*; import j ... -
Java设置系统时间与网络标准时间同步
2010-05-18 09:51 7417Java校正电脑时间(java 时 ... -
在汉字库中寻找某个汉字的点阵数据
2010-04-22 21:21 2058在计算机中英文可以使 ... -
Serializable,利用序列化来做深度拷贝
2010-04-08 12:38 1727package Assis; import java.i ... -
演示MediaTracker的作用
2010-01-25 16:16 2958package Assis; //TrackedImag ... -
Java图片处理 文字水印 图片水印 缩放 补白
2010-01-25 13:29 1454import java.awt.AlphaComposite; ... -
Java下Class.forName的作用是什么,为什么要使用它
2010-01-20 19:41 1384Class.forName(xxx.xx.xx) 返回的是一个 ... -
JDK1.6官方下载_JDK6官方下载_JDK1.6API(chm)下载_JDK6APICHM中文参
2009-12-21 17:47 192440JDK1.6官方下载_JDK6官方下载地址:http://ww ... -
PNG格式文件结构详解
2009-12-10 15:09 2145前言 我们都知道,在进行J2ME的手机应用程序开发的时候,在 ... -
求一定范围内的质数
2009-11-27 17:14 1452import javax.microedition.midle ... -
调用org.apache.tools.zip包,从压缩包中提取文件
2009-08-22 16:10 3284import java.io.*; import java. ... -
重新绘制界面,repaint()函数的作用
2009-08-22 16:02 2371import java.awt.Color; import ...
相关推荐
这个版本包含了对Zip文件格式的支持,其中`org.apache.tools.zip.ZipOutputStream`是Ant用来创建Zip压缩文件的核心类。在处理中文文件名时,可能会遇到乱码问题,这是由于字符编码不一致所导致的。 描述中提到的...
解压缩ZIP文件主要涉及`java.util.zip.ZipInputStream`和`org.apache.tools.zip.ZipEntry`。以下是一般过程: - 创建`ZipInputStream`对象,基于一个输入流(如FileInputStream),指向ZIP文件。 - 循环读取ZIP...
在实际开发中,你可能会遇到需要在程序中直接调用Ant任务的情况,这时可以直接导入`org.apache.tools.ant`包下的相关类,比如`Project`和`Task`,创建并执行自定义的Ant任务。这在自动化测试、持续集成等场景中非常...
这里我们重点讨论使用两个库:`zip4j`和`Apache Ant`来实现这些功能。 1. **zip4j库**:`zip4j-1.3.2.jar`是一个用Java编写的库,它提供了方便的API来处理Zip文件。以下是一些关键功能: - **压缩文件和目录**:你...
expand.setSrc(new org.apache.tools.ant.types.FileSet().setDir(new File(zipFilePath))); expand.setDest(new File(targetDir)); try { expand.execute(); } catch (Exception e) { System.err.println(...
Apache Maven 是一个强大的项目管理和构建工具,主要用于Java项目。它基于项目对象模型(Project Object Model,POM)的概念,能够自动化构建过程,包括编译、测试、打包、部署等步骤。Maven通过中央仓库下载所需的...
import org.apache.tools.zip.ZipOutputStream; public class ZipCompressor { static final int BUFFER = 8192; private File zipFile; public ZipCompressor(String pathName) { zipFile = new File...
通过使用Apache Ant的`Zip`任务,Java开发者能够轻松地实现文件夹的压缩功能,这不仅简化了代码的复杂性,还提高了代码的可读性和可维护性。无论是为了备份还是为了在网络上传输文件,这种压缩算法都是一个高效且...
在本例中,我们提到的实现方式是通过使用Apache Ant库中的`org.apache.tools.ant.taskdefs.Zip`类。Apache Ant是一个基于Java的任务驱动构建系统,它的任务库包含了丰富的功能,其中之一就是文件压缩。 `Zip`类提供...
这个"apache-cxf-3.5.0.zip"压缩包包含了CXF的3.5.0版本,该版本提供了对Web服务的全面支持,包括服务的创建、部署和消费。CXF是基于SOAP和RESTful服务的,同时也支持多种协议如HTTP、JMS等。 "wsdl2java"工具是...
import org.apache.tools.zip.ZipOutputStream; import org.apache.tools.zip.ZipEntry; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; public class CompressTool { ...
Eclipse Axis2 插件可以自动生成 .arr 文件,我们可以从 http://axis.apache.org/axis2/java/core/tools/index.html 下载两个文件,放到 Eclipse 的 droppings 文件夹下。重新启动 Eclipse,插件安装成功。 三、...
而Apache Ant库提供了一个名为`org.apache.tools.ant`的包,其中包含`Zip`任务类,能够方便地完成文件夹及其子文件夹的打包工作。 首先,我们需要引入`ant.jar`到我们的项目中。这通常通过在项目的类路径...
通过添加Ant的jar文件到classpath,你可以使用`org.apache.tools.zip`包来替代`java.util.zip`,这个包支持更多的编码选项。 以下是一个简单的示例,展示了如何使用`ZipOutputStream`和`ZipInputStream`进行文件的...
import org.apache.tools.zip.ZipEntry; import org.apache.tools.zip.ZipFile; ``` 这里导入了处理文件I/O操作的基本类以及Apache Commons Compress库中的`ZipEntry`和`ZipFile`类。 ##### 2. 定义ZipUtils类 ```...
这个压缩包“geotools-26.1-bin.zip”包含了GeoTools的26.1版本,是开发者进行GIS应用开发的重要资源。在本文中,我们将深入探讨GeoTools的核心特性、主要功能以及如何利用它进行地理空间数据的处理和展示。 1. **...
附件tools.rar压缩文件是我进行处理过后的需要调用到的java源程序,主要为Deflater.java,DeflaterOutputStream.java,InflaterInputStream.java,ZipConstants.java,ZipEntry.java,ZipInputStram.java,ZipOutputStream...
import org.apache.tools.ant.taskdefs.Unzip; public class FileDecompressor { private static final Log logger = LogFactory.getLog(FileDecompressor.class); public void decompressZip(String ...
然而,如果你需要处理复杂的压缩需求,如保持文件的原始权限、处理符号链接等,可能需要借助第三方库,如`ant.jar`中的`org.apache.tools.ant.types.resources.ZipResource`等类。 描述中提到的"类文件中有解压缩两...