把下面文件放入同一目录下,运行使用 Run As Java Application 即可

//文件DirectoryZip.java,  压缩文件例子

import  java.io.File;
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.File;
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格式)相关推荐

  1. java压缩解压缩_利用Java实现压缩与解压缩(zip、gzip)支持中文路径

    zip扮演着归档和压缩两个角色:gzip并不将文件归档,仅只是对单个文件进行压缩,所以,在UNIX平台上,命令tar通常用来创建一个档案文件,然后命令gzip来将档案文件压缩. Java I/O类库还 ...

  2. java压缩/解压缩zip格式文件

    因为项目要用到压缩.解压缩zip格式压缩包,只好自己封装一个,对于网上流行的中文乱码的问题,本文的解决方法是用apache的包代替jdk里的.基本上还是比较好用的. 废话少说,直接上代码. 1 pac ...

  3. Java压缩/解压缩二进制文件

    在Java中提供Deflater和Inflater工具类来压缩/解压缩数据. 这两个工具类采用zlib算法,下面给出一个封装好的工具. Java代码 /** * util for compress/d ...

  4. Java 压缩解压缩 第三方组件,推荐一个强大的Java开发工具类库!

    feilong开发更简便的工具库 Reduce development, Release ideas (灵感从重复简单的代码中释放出来) 让你从大量重复的底层代码中脱身,提高工作效率; 让你的代码更简 ...

  5. java压缩解压缩类实例[转]

    package com.yangxiaozuo.util; import java.io.ByteArrayOutputStream;   import java.io.IOException;   ...

  6. Java 压缩解压字符串(支持中文)

    public static void main(String[] args) throws Exception{ String str ="xflush3.0个人感觉最大的特点就是监控配置非 ...

  7. java压缩解压缩rar、zip文件

    来源https://www.open-open.com/lib/view/open1363592512046.html 被zip 折腾的要死,特意记录一下来,以后防翻车 package cn.com. ...

  8. 如何让Flex AIR压缩解压缩库airxzip也支持中文文件名

    最近忙个Flex AIR项目要用到压缩和解压缩打包网络传输功能,所以在网上发现了这个库airxzip,接口使用挺方便的,但是一开始就是不支持中文文件名,压缩后的文件名一直是用UTF-8的,后来从air ...

  9. smbclient java,Java使用SMBJ包从仅支持SMB2/SMB3协议的共享文件夹下载文件

    说明 之前整理了一篇jcifs不能用于SMB2/SMB3机器的解决方式,其中提到了将jcifs包替换为smbj的方式解决,给出的下载的demo中虽然可以正常列出共享文件夹中的文件,但是具体怎样将共享文 ...

最新文章

  1. Java虚拟机学习(2):垃圾收集算法
  2. MiniGUI细节处理(转)
  3. 【知乎直播】千奇百怪的CNN网络架构等你来
  4. Scikit-Learn 机器学习笔记 -- MNIST
  5. ios开发闹钟源代码_开源源码让短视频的开发变得更加便捷
  6. oracle database 12cr2 使用 dbms_stat 采集统计信息
  7. python中list index out of range_Python知识精解:str split()方法
  8. 徐工施维英:基于帆软搭建数字化驾驶舱,提高生产效率50%
  9. MySQL内核月报 2015.01-MySQL · 捉虫动态· replicate filter 和 GTID 一起使用的问题
  10. (130)FPGA面试题-FPGA设计中波特率和比特率的区别
  11. C:\Users\xx\.xxxxxx\system\tomcat\xxx\work\Catalina\localhost\ROOT(系统找不到指定文件)
  12. UWB定位系统部署原则
  13. 私有化+国产化,这款安全可靠的知识管理系统超赞
  14. nodejs轻量型个人文档管理系统
  15. 安卓手机虚拟键盘定位position:fixed问题
  16. 【机器学习】多分类学习的拆分策略
  17. 英文标点符号unicode
  18. 京东区块链之科普篇:京东在区块链技术领域的应用与布局
  19. IDEA 最新激活方法
  20. 大数据技术原理与应用 实验6 Spark数据处理系统的搭建

热门文章

  1. 电脑耳机没有声音,前面板耳机孔没声音
  2. javascript学习笔记——Ajax、跨资源共享(CORS)、图像Ping、JSONP、Comet、Web Socket
  3. 启动Tomcat报错org.hibernate.cfg.Environment.clinit HHH000206: hibernate.properties not found
  4. prim最小生成树算法原理
  5. 大学计算机基础ppt操作题都考什么,大学计算机基础操作题.ppt
  6. 元胞自动机代码演示案例
  7. [附源码]java毕业设计网上购物商城系统
  8. 有关于采集 负电压的一二事,STM32测量电流
  9. 【NX二次开发】单位化向量
  10. 用gitbash提交代码步骤