java压缩解压缩完整例子(仅支持lzh格式)
把下面文件放入同一目录下,运行使用 Run As Java Application 即可
//文件DirectoryZip.java, 压缩文件例子
import java.io.FileInputStream;
import java.io.FileOutputStream;
import jp.gr.java_conf.dangan.util.lha.LhaHeader;
import jp.gr.java_conf.dangan.util.lha.LhaOutputStream;
/** */ /**
* @author tyrone
*
*/
public class DirectoryZip ... {
/** *//**
*@param inputFileName, file or directory waiting for zipping ,outputFileName output file name
*
*/
public void zip(String inputFileName,String outputFileName) throws Exception ...{
LhaOutputStream out = new LhaOutputStream(new FileOutputStream(outputFileName));
zip(out, new File(inputFileName), "");
System.out.println("zip done");
out.close();
}
private void zip(LhaOutputStream out, File f, String base) throws Exception ...{
if (f.isDirectory()) ...{
File[] fl = f.listFiles();
if (System.getProperty("os.name").startsWith("Windows"))...{
out.putNextEntry(new LhaHeader(base + "/"));
base = base.length() == 0 ? "" : base + "/";
}
else...{
out.putNextEntry(new LhaHeader(base + "/"));
base = base.length() == 0 ? "" : base + "/";
}
for (int i = 0; i < fl.length; i++) ...{
zip(out, fl[i], base + fl[i].getName());
}
}
else ...{
out.putNextEntry(new LhaHeader(base));
//***乱????理
//BufferedReader in=new BufferedReader(
//new InputStreamReader(new FileInputStream(f),"ISO8859_1"));
FileInputStream in = new FileInputStream(f);
int b;
System.out.println(base);
while ( (b = in.read()) != -1) ...{
out.write(b);
}
in.close();
}
}
public static void main(String[] args)...{
DirectoryZip m_zip=new DirectoryZip();
try...{
m_zip.zip("E:/temp","E:/www.lzh");
}catch(Exception ex)...{
ex.printStackTrace();
}
}
}
//文件Unzip.java, 解压lzh文件的例子
import java.io.FileInputStream;
import java.io.FileOutputStream;
import jp.gr.java_conf.dangan.util.lha.LhaHeader;
import jp.gr.java_conf.dangan.util.lha.LhaInputStream;
/** */ /** */ /** */ /**
* 使用java核心??打包、解包zip文件,不足之?在于??中文名的文件?,在??包内中文字符是乱?,
* 在windows下解?后??正常?示中文,而其他系?下?不能正常?原;
*/
public class Unzip ... {
/** *//** *//** *//**
* 定?解??zip文件的方法
* @param zipFileName
* @param outputDirectory
*/
public void unzip(String zipFileName, String outputDirectory) ...{
try ...{
// BufferedReader in=new BufferedReader(
// new InputStreamReader(new ZipInputStream(new FileInputStream(zipFileName)),"ISO8859_1"));
///ZipInputStream in = new ZipInputStream(new FileInputStream(zipFileName));
LhaInputStream in = new LhaInputStream(new FileInputStream(zipFileName));
//?取ZipInputStream中的ZipEntry条目,一个zip文件中可能包含多个ZipEntry,
//当getNextEntry方法的返回??null,?代表ZipInputStream中没有下一个ZipEntry,
//?入流?取完成;
LhaHeader z = in.getNextEntry();
while (z != null) ...{
//System.out.println("unziping " + z.getName());
//?建以zip包文件名?目?名的根目?
File f = new File(outputDirectory);
f.mkdir();
if (z.getPath().endsWith("/")) ...{
String path = z.getPath();
path = path.substring(0, path.length() - 1);
System.out.println("path " + path);
f = new File(outputDirectory + path);
f.mkdir();
System.out.println("mkdir " + outputDirectory + File.separator + path);
}
else ...{
if(z.getPath().lastIndexOf('/')>0)...{
f = new File(outputDirectory + z.getPath().substring(z.getPath().lastIndexOf('/')));
} else ...{
f = new File(outputDirectory + z.getPath());
}
f.createNewFile();
FileOutputStream out = new FileOutputStream(f);
int b;
while ((b = in.read()) != -1) ...{
out.write(b);
}
out.close();
}
//?取下一个ZipEntry
z = in.getNextEntry();
}
in.close();
}
catch (Exception e) ...{
// TODO 自?生成 catch ?
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception...{
Unzip t = new Unzip();
t.unzip("e:/www.lzh", "e:/bbb");
//解?C?下的a.zip文件放到C?下的b文件?里
//一定要注意a.zip文件要?java程序??出来的文件,?个程序才可以解?
}
}
注意:本程序引用的包,不是java自带的,需要下载导入。 以下是下载地址:
http://packages.debian.org/source/etch/all/libjlha-java
或者到 http://hiyu2218.download.csdn.net/ 在搜索中输入 libjlha-java 去搜索,偶已经上传该资源了。
java压缩解压缩完整例子(仅支持lzh格式)相关推荐
- java压缩解压缩_利用Java实现压缩与解压缩(zip、gzip)支持中文路径
zip扮演着归档和压缩两个角色:gzip并不将文件归档,仅只是对单个文件进行压缩,所以,在UNIX平台上,命令tar通常用来创建一个档案文件,然后命令gzip来将档案文件压缩. Java I/O类库还 ...
- java压缩/解压缩zip格式文件
因为项目要用到压缩.解压缩zip格式压缩包,只好自己封装一个,对于网上流行的中文乱码的问题,本文的解决方法是用apache的包代替jdk里的.基本上还是比较好用的. 废话少说,直接上代码. 1 pac ...
- Java压缩/解压缩二进制文件
在Java中提供Deflater和Inflater工具类来压缩/解压缩数据. 这两个工具类采用zlib算法,下面给出一个封装好的工具. Java代码 /** * util for compress/d ...
- Java 压缩解压缩 第三方组件,推荐一个强大的Java开发工具类库!
feilong开发更简便的工具库 Reduce development, Release ideas (灵感从重复简单的代码中释放出来) 让你从大量重复的底层代码中脱身,提高工作效率; 让你的代码更简 ...
- java压缩解压缩类实例[转]
package com.yangxiaozuo.util; import java.io.ByteArrayOutputStream; import java.io.IOException; ...
- Java 压缩解压字符串(支持中文)
public static void main(String[] args) throws Exception{ String str ="xflush3.0个人感觉最大的特点就是监控配置非 ...
- java压缩解压缩rar、zip文件
来源https://www.open-open.com/lib/view/open1363592512046.html 被zip 折腾的要死,特意记录一下来,以后防翻车 package cn.com. ...
- 如何让Flex AIR压缩解压缩库airxzip也支持中文文件名
最近忙个Flex AIR项目要用到压缩和解压缩打包网络传输功能,所以在网上发现了这个库airxzip,接口使用挺方便的,但是一开始就是不支持中文文件名,压缩后的文件名一直是用UTF-8的,后来从air ...
- smbclient java,Java使用SMBJ包从仅支持SMB2/SMB3协议的共享文件夹下载文件
说明 之前整理了一篇jcifs不能用于SMB2/SMB3机器的解决方式,其中提到了将jcifs包替换为smbj的方式解决,给出的下载的demo中虽然可以正常列出共享文件夹中的文件,但是具体怎样将共享文 ...
最新文章
- Java虚拟机学习(2):垃圾收集算法
- MiniGUI细节处理(转)
- 【知乎直播】千奇百怪的CNN网络架构等你来
- Scikit-Learn 机器学习笔记 -- MNIST
- ios开发闹钟源代码_开源源码让短视频的开发变得更加便捷
- oracle database 12cr2 使用 dbms_stat 采集统计信息
- python中list index out of range_Python知识精解:str split()方法
- 徐工施维英:基于帆软搭建数字化驾驶舱,提高生产效率50%
- MySQL内核月报 2015.01-MySQL · 捉虫动态· replicate filter 和 GTID 一起使用的问题
- (130)FPGA面试题-FPGA设计中波特率和比特率的区别
- C:\Users\xx\.xxxxxx\system\tomcat\xxx\work\Catalina\localhost\ROOT(系统找不到指定文件)
- UWB定位系统部署原则
- 私有化+国产化,这款安全可靠的知识管理系统超赞
- nodejs轻量型个人文档管理系统
- 安卓手机虚拟键盘定位position:fixed问题
- 【机器学习】多分类学习的拆分策略
- 英文标点符号unicode
- 京东区块链之科普篇:京东在区块链技术领域的应用与布局
- IDEA 最新激活方法
- 大数据技术原理与应用 实验6 Spark数据处理系统的搭建
热门文章
- 电脑耳机没有声音,前面板耳机孔没声音
- javascript学习笔记——Ajax、跨资源共享(CORS)、图像Ping、JSONP、Comet、Web Socket
- 启动Tomcat报错org.hibernate.cfg.Environment.clinit HHH000206: hibernate.properties not found
- prim最小生成树算法原理
- 大学计算机基础ppt操作题都考什么,大学计算机基础操作题.ppt
- 元胞自动机代码演示案例
- [附源码]java毕业设计网上购物商城系统
- 有关于采集 负电压的一二事,STM32测量电流
- 【NX二次开发】单位化向量
- 用gitbash提交代码步骤