- 浏览: 243554 次
- 性别:
- 来自: 西安
文章分类
最新评论
-
243035985:
顶红色的那段
eclipse增加struts.xml智能提示(绝对能用) -
spiritdyh:
不错!!!
eclipse增加struts.xml智能提示(绝对能用) -
xiarilian12:
lovelimx 写道{myEquipSN:encodeURI ...
以"对象"方式接收json数据.(解决乱码问题) -
xiarilian12:
qiaolevip 写道用不成,应该是版本的问题吧。JSONO ...
以"对象"方式接收json数据.(解决乱码问题) -
qiaolevip:
用不成,应该是版本的问题吧。JSONObject jsonOb ...
以"对象"方式接收json数据.(解决乱码问题)
1.import java.io.BufferedInputStream; 2.import java.io.BufferedOutputStream; 3.import java.io.File; 4.import java.io.FileInputStream; 5.import java.io.FileOutputStream; 6.import java.io.IOException; 7.import java.io.InputStream; 8.import java.io.OutputStream; 9.import java.util.ArrayList; 10.import java.util.Enumeration; 11.import java.util.List; 12.import java.util.zip.ZipEntry; 13.import java.util.zip.ZipFile; 14.import java.util.zip.ZipOutputStream; 15. 16.public class ZipToFile { 17. 18. public static final String ZIP_FILENAME = "C:\\XJPDA.zip";//需要解压缩的文件名 19. public static final String ZIP_DIR = "C:\\XJPDA\\";//需要压缩的文件夹 20. public static final String UN_ZIP_DIR = "C:\\";//要解压的文件目录 21. public static final int BUFFER = 1024 ;//缓存大小 22. 23. /** 24. * zip压缩功能. 25. * 压缩baseDir(文件夹目录)下所有文件,包括子目录 26. * @throws Exception 27. */ 28. public static void zipFile(String baseDir,String fileName) throws Exception{ 29. List fileList=getSubFiles(new File(baseDir)); 30. ZipOutputStream zos=new ZipOutputStream(new FileOutputStream(fileName)); 31. ZipEntry ze=null; 32. byte[] buf=new byte[BUFFER]; 33. int readLen=0; 34. for(int i = 0; i <fileList.size(); i++) { 35. File f=(File)fileList.get(i); 36. ze=new ZipEntry(getAbsFileName(baseDir, f)); 37. ze.setSize(f.length()); 38. ze.setTime(f.lastModified()); 39. zos.putNextEntry(ze); 40. InputStream is=new BufferedInputStream(new FileInputStream(f)); 41. while ((readLen=is.read(buf, 0, BUFFER))!=-1) { 42. zos.write(buf, 0, readLen); 43. } 44. is.close(); 45. } 46. zos.close(); 47. } 48. 49. /** 50. * 给定根目录,返回另一个文件名的相对路径,用于zip文件中的路径. 51. * @param baseDir java.lang.String 根目录 52. * @param realFileName java.io.File 实际的文件名 53. * @return 相对文件名 54. */ 55. private static String getAbsFileName(String baseDir, File realFileName){ 56. File real=realFileName; 57. File base=new File(baseDir); 58. String ret=real.getName(); 59. while (true) { 60. real=real.getParentFile(); 61. if(real==null) 62. break; 63. if(real.equals(base)) 64. break; 65. else 66. ret=real.getName()+"/"+ret; 67. } 68. return ret; 69. } 70. 71. /** 72. * 取得指定目录下的所有文件列表,包括子目录. 73. * @param baseDir File 指定的目录 74. * @return 包含java.io.File的List 75. */ 76. private static List getSubFiles(File baseDir){ 77. List ret=new ArrayList(); 78. File[] tmp=baseDir.listFiles(); 79. for (int i = 0; i <tmp.length; i++) { 80. if(tmp[i].isFile()) 81. ret.add(tmp[i]); 82. if(tmp[i].isDirectory()) 83. ret.addAll(getSubFiles(tmp[i])); 84. } 85. return ret; 86. } 87. 88. /** 89. * 解压缩功能. 90. * 将ZIP_FILENAME文件解压到ZIP_DIR目录下. 91. * @throws Exception 92. */ 93. public static void upZipFile() throws Exception{ 94. ZipFile zfile=new ZipFile(ZIP_FILENAME); 95. Enumeration zList=zfile.entries(); 96. ZipEntry ze=null; 97. byte[] buf=new byte[1024]; 98. while(zList.hasMoreElements()){ 99. ze=(ZipEntry)zList.nextElement(); 100. if(ze.isDirectory()){ 101. File f=new File(ZIP_DIR+ze.getName()); 102. f.mkdir(); 103. continue; 104. } 105. OutputStream os=new BufferedOutputStream(new FileOutputStream(getRealFileName(ZIP_DIR, ze.getName()))); 106. InputStream is=new BufferedInputStream(zfile.getInputStream(ze)); 107. int readLen=0; 108. while ((readLen=is.read(buf, 0, 1024))!=-1) { 109. os.write(buf, 0, readLen); 110. } 111. is.close(); 112. os.close(); 113. } 114. zfile.close(); 115. } 116. 117. /** 118. * 给定根目录,返回一个相对路径所对应的实际文件名. 119. * @param baseDir 指定根目录 120. * @param absFileName 相对路径名,来自于ZipEntry中的name 121. * @return java.io.File 实际的文件 122. */ 123. public static File getRealFileName(String baseDir, String absFileName){ 124. String[] dirs=absFileName.split("/"); 125. File ret=new File(baseDir); 126. if(dirs.length>1){ 127. for (int i = 0; i < dirs.length-1;i++) { 128. ret=new File(ret, dirs[i]); 129. } 130. if(!ret.exists()) 131. ret.mkdirs(); 132. ret=new File(ret, dirs[dirs.length-1]); 133. return ret; 134. } 135. return ret; 136. } 137. 138.} import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.ArrayList; import java.util.Enumeration; import java.util.List; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; import java.util.zip.ZipOutputStream; public class ZipToFile { public static final String ZIP_FILENAME = "C:\\XJPDA.zip";//需要解压缩的文件名 public static final String ZIP_DIR = "C:\\XJPDA\\";//需要压缩的文件夹 public static final String UN_ZIP_DIR = "C:\\";//要解压的文件目录 public static final int BUFFER = 1024 ;//缓存大小 /** * zip压缩功能. * 压缩baseDir(文件夹目录)下所有文件,包括子目录 * @throws Exception */ public static void zipFile(String baseDir,String fileName) throws Exception{ List fileList=getSubFiles(new File(baseDir)); ZipOutputStream zos=new ZipOutputStream(new FileOutputStream(fileName)); ZipEntry ze=null; byte[] buf=new byte[BUFFER]; int readLen=0; for(int i = 0; i <fileList.size(); i++) { File f=(File)fileList.get(i); ze=new ZipEntry(getAbsFileName(baseDir, f)); ze.setSize(f.length()); ze.setTime(f.lastModified()); zos.putNextEntry(ze); InputStream is=new BufferedInputStream(new FileInputStream(f)); while ((readLen=is.read(buf, 0, BUFFER))!=-1) { zos.write(buf, 0, readLen); } is.close(); } zos.close(); } /** * 给定根目录,返回另一个文件名的相对路径,用于zip文件中的路径. * @param baseDir java.lang.String 根目录 * @param realFileName java.io.File 实际的文件名 * @return 相对文件名 */ private static String getAbsFileName(String baseDir, File realFileName){ File real=realFileName; File base=new File(baseDir); String ret=real.getName(); while (true) { real=real.getParentFile(); if(real==null) break; if(real.equals(base)) break; else ret=real.getName()+"/"+ret; } return ret; } /** * 取得指定目录下的所有文件列表,包括子目录. * @param baseDir File 指定的目录 * @return 包含java.io.File的List */ private static List getSubFiles(File baseDir){ List ret=new ArrayList(); File[] tmp=baseDir.listFiles(); for (int i = 0; i <tmp.length; i++) { if(tmp[i].isFile()) ret.add(tmp[i]); if(tmp[i].isDirectory()) ret.addAll(getSubFiles(tmp[i])); } return ret; } /** * 解压缩功能. * 将ZIP_FILENAME文件解压到ZIP_DIR目录下. * @throws Exception */ public static void upZipFile() throws Exception{ ZipFile zfile=new ZipFile(ZIP_FILENAME); Enumeration zList=zfile.entries(); ZipEntry ze=null; byte[] buf=new byte[1024]; while(zList.hasMoreElements()){ ze=(ZipEntry)zList.nextElement(); if(ze.isDirectory()){ File f=new File(ZIP_DIR+ze.getName()); f.mkdir(); continue; } OutputStream os=new BufferedOutputStream(new FileOutputStream(getRealFileName(ZIP_DIR, ze.getName()))); InputStream is=new BufferedInputStream(zfile.getInputStream(ze)); int readLen=0; while ((readLen=is.read(buf, 0, 1024))!=-1) { os.write(buf, 0, readLen); } is.close(); os.close(); } zfile.close(); } /** * 给定根目录,返回一个相对路径所对应的实际文件名. * @param baseDir 指定根目录 * @param absFileName 相对路径名,来自于ZipEntry中的name * @return java.io.File 实际的文件 */ public static File getRealFileName(String baseDir, String absFileName){ String[] dirs=absFileName.split("/"); File ret=new File(baseDir); if(dirs.length>1){ for (int i = 0; i < dirs.length-1;i++) { ret=new File(ret, dirs[i]); } if(!ret.exists()) ret.mkdirs(); ret=new File(ret, dirs[dirs.length-1]); return ret; } return ret; } }
不过上面存在中文问题
是因为java.util.zip下的格式转换有问题
将
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipOutputStream;
改成
import org.apache.tools.zip.*;
即可!
apache里修正了这一现象。
原文地址:http://orz.iteye.com/blog/110842
发表评论
-
debug模式启动resin
2011-04-11 14:11 1602只做记录用: http://www.vinceruan.inf ... -
MD5
2011-01-20 22:15 1346package com.zyg.security.md5; ... -
揭开正则表达式的神秘面纱(1)
2010-12-29 22:43 1071揭开正则表达式的神秘面纱(1) http://blog.cs ... -
Cookie读取与写入 Java
2010-12-29 22:39 4053Cookie读取与写入有两种方法,用程序写和用js写的两种方法 ... -
在Eclipse中导入dtd和xsd文件,使XML自动提示
2010-12-29 22:37 3369DTD 类型约束文件 1. Window->Pr ... -
MD5加密
2010-12-29 22:35 990public class MD5 { public MD5 ... -
动态页面静态化 Java
2010-12-29 22:19 2100import java.io.*; import java.n ... -
lucene整理2 -- 主要的类
2010-12-29 22:13 860http://blog.csdn.net/xiaoping84 ... -
lucene整理3 -- 排序、过滤、分词器
2010-12-29 22:11 17751. 排序 1.1. Sort类 public Sort ... -
MMAnalyzer极易中文分词组件
2010-12-29 21:46 6224支持英文、数字、中文 ... -
MathContext RoundingMode BigDecimal
2010-12-29 21:41 1202import java.math.BigDecimal; i ... -
分页助手类
2010-12-29 21:37 1328/** * 分页操作助手类 * ... -
数字操作助手类
2010-12-29 21:33 1228public class NumberHelper { ... -
通过JAVA反射机制与DOM4J来实现持久化JAVA对象
2010-11-08 09:55 1155一个接口ReadWriteInt ,一个实现类ReadWrit ... -
java实现断点续传
2010-11-08 09:46 990/** * @{#} MainThre ... -
总结Ext grid中得到选择行的方法
2010-09-07 16:21 1164(1)grid.getStore().getRange(0,s ... -
Tomcat5.5配置-多域名绑定和虚拟目录(转载)
2010-07-05 16:53 860今天帮一个朋友搭建ospo ... -
web.xml配置详细解释(2)
2010-04-15 16:32 1434这里讨论控制servlet和JSP页面的启动行为的方法。特别是 ... -
web.xml的详细配置(1)
2010-04-15 16:31 5271 定义头和根元素 部 ... -
applicationContext.xml
2010-04-07 18:15 767<?xml version="1.0" ...
相关推荐
使用Java核心API实现单文件/多文件/整个目录的压缩/解压缩功能,由于自带API(1.6)不支持指定编码方式,因此中文会出现乱码(1.7貌似已经支持指定编码方式),所以还写了一个基于ant包的压缩/解压缩代码。
本文详细介绍了如何使用 Java 进行 ZIP 文件的压缩与解压缩,以及如何实现文件的加密与解密功能。通过这些方法,可以有效地管理和处理大量的文件数据,提高应用程序的性能和安全性。在实际应用中,还需要注意选择...
4. **源代码实现**:实践中提供的源代码展示了如何使用Java API来实现文件和目录的压缩与解压缩。这可能包括读取文件,创建压缩流,写入数据到压缩流,以及从压缩流中读取和写入文件等步骤。 5. **文件操作**:在...
JAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩...
在Java编程语言中,`zip`...通过`ZipFile`、`ZipOutputStream`和`ZipEntry`,我们可以方便地完成文件和目录的压缩与解压缩任务。在实际应用中,理解这些类的用法和交互对于编写高效、可靠的压缩/解压缩程序至关重要。
在提供的代码片段中,`unzipFile`方法展示了如何解压缩一个`.zip`文件。它首先创建一个`ZipFile`对象,然后遍历其中的所有`ZipEntry`,如果是目录,则创建对应的目录结构;如果是文件,则通过`getInputStream`获取流...
在Java编程语言中,文件的压缩与解压缩是常见的操作,尤其在数据传输、存储优化以及备份场景下显得尤为重要。...通过上述知识点,开发者能够有效地在Java环境中进行ZIP文件的压缩与解压缩操作,满足实际项目需求。
在Java编程语言中,解压缩ZIP文件是一项常见的任务,特别是在处理数据传输、文件打包和部署等场景下。本文将深入探讨如何使用Java API来解压缩ZIP文件,包括基本概念、核心类库以及具体实现步骤。 ZIP文件是一种...
java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文).zip java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文).zip java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文)....
接下来是解压缩ZIP文件的部分。这里同样使用了`java.util.zip`包,但这次使用了`ZipFile`类。以下是解压的关键步骤: 1. 创建一个`ZipFile`对象,传入ZIP文件的路径,如`"E:\\test\\myfiles.zip"`。 2. 使用`...
JAVA文件压缩与解压缩实践(源代码+LW)JAVA文件压缩与解压缩实践(源代码+LW)JAVA文件压缩与解压缩实践(源代码+LW)JAVA文件压缩与解压缩实践(源代码+LW)JAVA文件压缩与解压缩实践(源代码+LW)JAVA文件压缩与解压缩实践...
JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与...
### Java 实现 ZIP 文件压缩与解压缩 #### 知识点概述 在现代软件开发过程中,数据压缩是一项非常重要的技术,特别是在处理大量数据时。Java 作为一种广泛应用的编程语言,提供了丰富的 API 来支持文件的压缩与解...
我们将讨论核心的Java API,如`java.util.zip`包中的类,并通过一个名为`CompressFileUtils`的工具类来展示如何实现文件的解压缩功能。 首先,`java.util.zip`包提供了几个关键类,用于处理各种压缩格式,如`...
接下来,我们讨论如何解压缩ZIP文件。解压缩通常包括以下步骤: 1. **创建`ZipInputStream`**:同样,你需要创建一个`ZipInputStream`,它从ZIP文件的输入流读取。 ```java FileInputStream fis = new ...
在这个场景中,我们关注的是如何使用Java来实现文件压缩包的上传以及在服务器上的解压缩。Java作为一种强大的编程语言,提供了丰富的库来支持这样的操作,特别是在涉及到SFTP(Secure File Transfer Protocol)时,...
解压缩ZIP文件的过程则相反,需要创建一个`ZipInputStream`实例,并将其链接到`FileInputStream`。通过调用`getNextEntry()`方法遍历ZIP文件中的每个条目,然后将数据读取到一个缓冲区,并写入目标文件。以下是一个...
Java 1.1实现了I/O数据流与网络数据流的单一接口,因此数据的压缩、网络传输和解 压缩的实现比较容易,下面介绍利用ZipEntry、ZipInputStream和ZipOutputStream三个Java 类实现zip数据压缩方式的编程方法。 zip压缩...