- 浏览: 3425264 次
- 性别:
- 来自: 珠海
文章分类
- 全部博客 (1633)
- Java (250)
- Android&HTML5 (111)
- Struts (10)
- Spring (236)
- Hibernate&MyBatis (115)
- SSH (49)
- jQuery插件收集 (55)
- Javascript (145)
- PHP (77)
- REST&WebService (18)
- BIRT (27)
- .NET (7)
- Database (105)
- 设计模式 (16)
- 自动化和测试 (19)
- Maven&Ant (43)
- 工作流 (36)
- 开源应用 (156)
- 其他 (16)
- 前台&美工 (119)
- 工作积累 (0)
- OS&Docker (83)
- Python&爬虫 (28)
- 工具软件 (157)
- 问题收集 (61)
- OFbiz (6)
- noSQL (12)
最新评论
-
HEZR曾嶸:
你好博主,这个不是很理解,能解释一下嘛//左边+1,上边+1, ...
java 两字符串相似度计算算法 -
天使建站:
写得不错,可以看这里,和这里的这篇文章一起看,有 ...
jquery 遍历对象、数组、集合 -
xue88ming:
很有用,谢谢
@PathVariable映射出现错误: Name for argument type -
jnjeC:
厉害,困扰了我很久
MyBatis排序时使用order by 动态参数时需要注意,用$而不是# -
TopLongMan:
非常好,很实用啊。。
PostgreSQL递归查询实现树状结构查询
http://www.oschina.net/code/snippet_2482052_54816
package com.yabushan.test.util.upload; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Enumeration; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.tools.zip.ZipEntry; import org.apache.tools.zip.ZipFile; import org.apache.tools.zip.ZipOutputStream; import org.slf4j.LoggerFactory; public class ZipUtil { protected static final org.slf4j.Logger log = LoggerFactory.getLogger(ZipUtil.class); private static final int BUFFER = 2048; /** * 解压文件到指定路径 * * @param filePath * @param upZipPath * @return 返回解压的文件集合 */ public static List<File> unZip(String filePath, String upZipPath) { List<File> list = new ArrayList<File>(); int count = -1; File file = null; InputStream is = null; FileOutputStream fos = null; BufferedOutputStream bos = null; // 生成指定的保存目录 String savePath = upZipPath; if (!new File(savePath).exists()) { new File(savePath).mkdirs(); } try { ZipFile zipFile = new ZipFile(filePath, "GBK"); Enumeration enu = zipFile.getEntries(); while (enu.hasMoreElements()) { ZipEntry zipEntry = (ZipEntry) enu.nextElement(); if (zipEntry.isDirectory()) { new File(savePath + "/" + zipEntry.getName()).mkdirs(); continue; } if (zipEntry.getName().indexOf("/") != -1) { new File(savePath + "/" + zipEntry.getName().substring(0, zipEntry.getName().lastIndexOf("/"))) .mkdirs(); } is = zipFile.getInputStream(zipEntry); file = new File(savePath + "/" + zipEntry.getName()); fos = new FileOutputStream(file); bos = new BufferedOutputStream(fos, BUFFER); byte buf[] = new byte[BUFFER]; while ((count = is.read(buf)) > -1) { bos.write(buf, 0, count); } bos.flush(); fos.close(); is.close(); list.add(file); } zipFile.close(); return list; } catch (IOException ioe) { log.error(ioe.getMessage()); return list; } } /** * RAR 需要配置rar路径 * * @param filePath * @param unRarPath * 路径要唯一,否则获取文件列表会出错 * @return */ public static int unRar(String filePath, String unRarPath) { int result = -99; if (!(new File(unRarPath).exists())) { new File(unRarPath).mkdirs(); } try { //String cmd = GlobalConfig.getConfigValue("cmd.path"); String cmd="test"; String unrarCmd = cmd + " e -r -o+ " + filePath + " " + unRarPath; Runtime rt = Runtime.getRuntime(); Process pre = rt.exec(unrarCmd); while(result==-99){ try { Thread.sleep(1000L); result = pre.exitValue(); } catch (Exception e) { // TODO: handle exception result = -99; } } InputStreamReader isr = new InputStreamReader(pre.getInputStream()); BufferedReader bf = new BufferedReader(isr); String line = null; while ((line = bf.readLine()) != null) { line = line.trim(); if ("".equals(line)) { continue; } log.info(line); } bf.close(); if (result != 0) { log.error("unRar " + pre.exitValue()); } // 杀死进程 退出 // pre.destroy(); return result; } catch (Exception e) { log.error(e.getMessage() + ": " + e.getStackTrace()); return -2; } } /*** * 将多个文件打成压缩包 * * @param list * 需打包的文件路径集合 * @param zipfilename * 压缩包名称 */ public static void listToZip(List<String> list, String zipfilename) { FileInputStream is = null; String path = ""; File file = null; ZipOutputStream zos = null; try { if (list != null && list.size() > 0) { //String uri = GlobalConfig.getConfigValue("zipFile.path"); String uri="D:/ZIP"; File f = new File(uri); if(!f.exists()){ f.mkdirs(); } zipfilename = uri + zipfilename; //创建zip文件输出流 zos = new ZipOutputStream(new FileOutputStream(new File( zipfilename))); zos.setEncoding("GBK"); for (int i = 0; i < list.size(); i++) { path = list.get(i); file = new File(path); if (file.exists()) { //创建源文件输入流 is = new FileInputStream(file); zos.putNextEntry(new ZipEntry(file.getName())); byte[] buf = new byte[BUFFER]; int length = -1; while ((length = is.read(buf)) != -1) { zos.write(buf, 0, length); zos.flush(); } zos.closeEntry(); is.close(); } else { System.out.println("源文件不存在"); } } } } catch (Exception e) { e.printStackTrace(); } finally { try { if (is != null) { is.close(); } if (zos != null) { zos.close(); } } catch (IOException e) { e.printStackTrace(); } } } /*** * 将多个文件打成压缩包(压缩包内文件名称由参数中传入) * * @param list * 需打包的文件信息集合 * @param zipfilename * 压缩包名称 */ public static void listMapToZip(List<Map<String,Object>> list, String zipfilename) { FileInputStream is = null; String path = ""; File file = null; ZipOutputStream zos = null; try { if (list != null && list.size() > 0) { //String uri = GlobalConfig.getConfigValue("zipFile.path"); String uri="D:/ZIP"; File f = new File(uri); if(!f.exists()){ f.mkdirs(); } zipfilename = uri + zipfilename; //创建zip文件输出流 zos = new ZipOutputStream(new FileOutputStream(new File( zipfilename))); zos.setEncoding("GBK"); for (Map map : list) { path = map.get("filePath")+""; file = new File(path); if (file.exists()) { //创建源文件输入流 is = new FileInputStream(file); zos.putNextEntry(new ZipEntry(map.get("fileName")+"")); byte[] buf = new byte[BUFFER]; int length = -1; while ((length = is.read(buf)) != -1) { zos.write(buf, 0, length); zos.flush(); } zos.closeEntry(); is.close(); } else { System.out.println("源文件不存在"); } } } } catch (Exception e) { e.printStackTrace(); } finally { try { if (is != null) { is.close(); } if (zos != null) { zos.close(); } } catch (IOException e) { e.printStackTrace(); } } } public static void main(String[] args) throws Exception { List<String> list = new ArrayList<String>(); list.add("D:/File/img/tempImg/7f7ffd45856be6aa.txt"); list.add("D:/File/img/tempImg/63f8959465093ec0.jpeg"); list.add("D:/File/img/tempImg/815b476dc8cf790e.txt"); list.add("D:/File/img/tempImg/4451519220dad91a.txt"); //ZipUtil.listToZip(list, "测试.zip"); System.out.println(ZipUtil.unZip("D:/ZIP测试.zip", "D:/ZIP/bb/").toString()); } }
发表评论
-
Java Comparable和Comparator
2016-06-26 08:52 699http://my.oschina.net/android52 ... -
Java集合框架之fastutil & koloboke
2016-06-23 14:04 2473Java集合框架之fastutil http://rensan ... -
ehcache 分布式支持
2016-06-05 22:26 1099原文 http://my.oschina.net/glenxu ... -
Intellij IDEA插件开发入门
2016-05-26 11:42 2883原文: http://blog.csdn.net/dc_726 ... -
阿里巴巴Druid数据源的配置与使用
2016-05-24 17:42 1546http://my.oschina.net/wjme/blog ... -
mysql中间件研究(Atlas,cobar,TDDL), 分库分表插件
2016-05-09 14:15 3445http://www.guokr.com/blog/47576 ... -
Java集合: Queue和Deque
2016-05-09 09:49 1864Queue http://my.oschina.net/kev ... -
使用gzip优化web应用(filter实现)
2016-05-07 01:45 1032使用gzip优化web应用(filter实现) http:// ... -
Byteman 3.0.5 发布,Java 字节码注入工具
2016-04-23 10:29 1770Byteman 3.0.5 发布,Java 字 ... -
RandomStringUtils的说明和生成随机汉字
2016-04-20 15:21 1394更多参考: http://my.oschina.net/wil ... -
通过IP地址获取地理位置
2016-04-20 15:19 895http://my.oschina.net/githubhty ... -
Java编程中使用正则表达式过滤非数字字符串
2016-04-14 13:51 1719/** * * @param str ... -
非对称加密DH算法,DH代码实现
2016-04-13 11:33 1358RSA算法原理(一)http:// ... -
企业支付宝账号开发接口教程
2016-03-31 14:52 1241企业支付宝账号开发接口教程--JAVA-UTF-8(实际操作- ... -
java double类型数据操作工具类
2016-03-28 17:36 1242http://my.oschina.net/yxwblog/b ... -
double转换到BigDecimal
2016-03-28 17:11 1547BigDecimal b = new BigDecimal(d ... -
Java 生成好看的验证码
2016-03-23 10:52 3363http://www.oschina.net/code/sni ... -
Linux环境安装配置Swftools
2016-03-22 21:01 1107http://tetop.blog.51cto.com/188 ... -
java图像压缩
2016-03-19 23:20 953http://my.oschina.net/686991/bl ... -
会话状态保持,JSESSIONID,COOKIE,URL重写
2016-03-17 20:26 1763http://my.oschina.net/sniperLi/ ...
相关推荐
在Java编程语言中,文件的压缩与解压缩是常见的数据处理操作,特别是在数据传输、存储优化和备份场景中。本实践项目围绕这个主题展开,包括源代码和相关的论文,为学习者提供了深入理解和应用Java压缩库的机会。以下...
(Java毕业设计)JAVA文件压缩与解压缩实践(Java毕业设计)JAVA文件压缩与解压缩实践(Java毕业设计)JAVA文件压缩与解压缩实践(Java毕业设计)JAVA文件压缩与解压缩实践(Java毕业设计)JAVA文件压缩与解压缩实践(Java毕业...
JAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩...
JAVA文件压缩与解压缩实践(源代码+论文) JAVA文件压缩与解压缩实践(源代码+论文) JAVA文件压缩与解压缩实践(源代码+论文) JAVA文件压缩与解压缩实践(源代码+论文) JAVA文件压缩与解压缩实践(源代码+论文) JAVA文件...
JAVA文件压缩与解压缩实践(源代码+LW)JAVA文件压缩与解压缩实践(源代码+LW)JAVA文件压缩与解压缩实践(源代码+LW)JAVA文件压缩与解压缩实践(源代码+LW)JAVA文件压缩与解压缩实践(源代码+LW)JAVA文件压缩与解压缩实践...
JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与...
java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文).zip java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文).zip java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文)....
JAVA文件压缩与解压缩实践(源代码+lw).rarJAVA文件压缩与解压缩实践(源代码+lw).rarJAVA文件压缩与解压缩实践(源代码+lw).rarJAVA文件压缩与解压缩实践(源代码+lw).rarJAVA文件压缩与解压缩实践(源代码+lw).rarJAVA...
3. **解压缩文件** 解压ZIP文件则需要一个`ZipInputStream`实例,它包装在一个`FileInputStream`中,指向ZIP文件。通过调用`getNextEntry`方法,你可以逐个访问ZIP文件中的每个条目,然后创建相应的文件或目录,将...
javaweb毕业设计-JAVA文件压缩与解压缩实践(源代码+lw)(可做课程设计).rarjavaweb毕业设计-JAVA文件压缩与解压缩实践(源代码+lw)(可做课程设计).rarjavaweb毕业设计-JAVA文件压缩与解压缩实践(源代码+lw)(可做课程...
3. **解压缩文件**: `ZipInputStream`可以用来读取和解压缩ZIP文件。创建`ZipInputStream`,然后循环读取每个`ZipEntry`,创建对应的文件或目录,并将数据写入。 4. **RAR文件处理**: 对于RAR格式,Java标准库没有...
Java文件压缩与解压缩是指将一个或多个文件或文件夹打包成一个压缩文件,或者将压缩文件解压缩成原始文件的过程。 常见的压缩格式包括ZIP、GZIP、TAR等,Java提供了相应的API来实现对这些格式的操作。 功能特点: ...
适合练手、课程设计、毕业设计的Java项目源码:文件压缩与解压缩实践(源代码+论文).rar 适合练手、课程设计、毕业设计的Java项目源码:文件压缩与解压缩实践(源代码+论文).rar 适合练手、课程设计、毕业设计的Java...
在Java编程环境中,处理文件的压缩与解压缩是一项常见的任务,尤其在数据传输、存档或备份场景下。本主题将深入探讨如何使用Java来创建一个文件解压缩工具箱,特别关注支持ZIP和RAR格式,并解决中文乱码问题。首先,...
在IT行业中,文件压缩与解压缩是日常工作中常见的操作,特别是在数据传输、存储优化和软件分发等领域。这里我们主要探讨的是一个简单的工具类,它支持zip、rar、tar等多种格式的压缩和解压缩功能,并且经过实际测试...