- 浏览: 239803 次
- 性别:
- 来自: 西安
文章分类
最新评论
-
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 1529只做记录用: http://www.vinceruan.inf ... -
MD5
2011-01-20 22:15 1302package com.zyg.security.md5; ... -
揭开正则表达式的神秘面纱(1)
2010-12-29 22:43 1028揭开正则表达式的神秘面纱(1) http://blog.cs ... -
Cookie读取与写入 Java
2010-12-29 22:39 4012Cookie读取与写入有两种方法,用程序写和用js写的两种方法 ... -
在Eclipse中导入dtd和xsd文件,使XML自动提示
2010-12-29 22:37 3334DTD 类型约束文件 1. Window->Pr ... -
MD5加密
2010-12-29 22:35 958public class MD5 { public MD5 ... -
动态页面静态化 Java
2010-12-29 22:19 2065import java.io.*; import java.n ... -
lucene整理2 -- 主要的类
2010-12-29 22:13 829http://blog.csdn.net/xiaoping84 ... -
lucene整理3 -- 排序、过滤、分词器
2010-12-29 22:11 17441. 排序 1.1. Sort类 public Sort ... -
MMAnalyzer极易中文分词组件
2010-12-29 21:46 6180支持英文、数字、中文 ... -
MathContext RoundingMode BigDecimal
2010-12-29 21:41 1137import java.math.BigDecimal; i ... -
分页助手类
2010-12-29 21:37 1288/** * 分页操作助手类 * ... -
数字操作助手类
2010-12-29 21:33 1184public class NumberHelper { ... -
通过JAVA反射机制与DOM4J来实现持久化JAVA对象
2010-11-08 09:55 1105一个接口ReadWriteInt ,一个实现类ReadWrit ... -
java实现断点续传
2010-11-08 09:46 957/** * @{#} MainThre ... -
总结Ext grid中得到选择行的方法
2010-09-07 16:21 1139(1)grid.getStore().getRange(0,s ... -
Tomcat5.5配置-多域名绑定和虚拟目录(转载)
2010-07-05 16:53 828今天帮一个朋友搭建ospo ... -
web.xml配置详细解释(2)
2010-04-15 16:32 1398这里讨论控制servlet和JSP页面的启动行为的方法。特别是 ... -
web.xml的详细配置(1)
2010-04-15 16:31 5001 定义头和根元素 部 ... -
applicationContext.xml
2010-04-07 18:15 730<?xml version="1.0" ...
相关推荐
使用Java核心API实现单文件/多文件/整个目录的压缩/解压缩功能,由于自带API(1.6)不支持指定编码方式,因此中文会出现乱码(1.7貌似已经支持指定编码方式),所以还写了一个基于ant包的压缩/解压缩代码。
java 实现压缩与解压缩ZIP .docjava 实现压缩与解压缩ZIP .docjava 实现压缩与解压缩ZIP .docjava 实现压缩与解压缩ZIP .doc
java 解压缩zip文件 java 解压缩zip文件 java 解压缩zip文件
JAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩...
java 压缩/解压 .zip/.rar/.tar 文件,大家一起讨论,学习 已实现zip压缩/解压,rar解压
JAVA文件压缩与解压缩实践,java解压缩zip文件,Java源码
java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文).zip java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文).zip java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文)....
解决java ZIP压缩、解压缩(同时加解密)问题,代码部分
JAVA文件压缩与解压缩实践(源代码+论文)
JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与...
java实现压缩与解压缩源码,demo 分享。 java实现压缩与解压缩源码。 java实现压缩与解压缩源码 java
关于Java实现文件的zip的解压缩 文本文档 虽然不多
压缩API:Java提供了java.util.zip和java.util.jar包来实现文件的压缩和解压缩操作。 压缩算法:通过选择不同的压缩算法,如DEFLATE算法用于ZIP格式,实现对文件的压缩。 流操作:使用Java的输入输出流(InputStream...
Java 1.1实现了I/O数据流与网络数据流的单一接口,因此数据的压缩、网络传输和解 压缩的实现比较容易,下面介绍利用ZipEntry、ZipInputStream和ZipOutputStream三个Java 类实现zip数据压缩方式的编程方法。 zip压缩...
java语言操作解压缩文件。 /** * 数据压缩 * * @param data * @return * @throws Exception */ public static byte[] compress(byte[] data) throws Exception { ByteArrayInputStream bais = new ...
Java实现压缩解压缩文件和文件夹(附源码) zip unzip 压缩 解压缩
Java实现压缩与解压缩功能源码,简单易用。直接嵌套在你需要的地方即可。