用Java实现文件的解压缩
来源:互联网 发布:弯曲正应力电测数据 编辑:程序博客网 时间:2024/05/22 13:13
压缩流:
ZipInputStream(解压),ZipOutoutStream(压缩)来现实Zip的压缩和解压功能。
菜鸟编的代码,有大虾发现不足之处请多多包含~~
package com.shilei.io.解压缩文件;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.util.Enumeration;import java.util.Scanner;import java.util.zip.ZipEntry;import java.util.zip.ZipFile;import java.util.zip.ZipOutputStream;/** * 文件的解压缩 * @author shilei * @category * @date 2013-4-16 * @time 下午08:29:12 * @version */public class ZipStreamDemo2 {/** * 压缩文件 * @param file 要解压的文件对象 * @param zipFile 压缩到的路径 */private static String path;private static String zipoutpath;public static void zipmethod(File file, String zipFileName)throws Exception {ZipOutputStream zos = null;path = file.getAbsolutePath();// System.out.println("path:"+path);// 判断文件是否文件夹if (!file.isDirectory()) {System.out.println(file.getName() + ":不是文件夹");return;} else {// 获得文件对象的集合File[] files = file.listFiles();if (zos == null) {// ZIP输出流为空则创建新的ZIP输出流FileOutputStream fos = new FileOutputStream(zipFileName);// 创建压缩文件的输出流对象zos = new ZipOutputStream(fos);// 创建新的ZIP输出流}readDir(file, zos);zos.close();}System.out.println("压缩完成...");}/** * * @param fileDir 要压缩的文件对象 * @param zipOut压缩的ZIP输出流 * @throws Exception */private static void readDir(File fileDir, ZipOutputStream zipOut)throws Exception {// 获得文件内的集合File[] files = fileDir.listFiles();String entryDir;for (File tempfile : files) {if (tempfile.isDirectory())// 是文件夹则递归{readDir(tempfile, zipOut);} else {// 读文件将数据写到压缩包中FileInputStream fis = new FileInputStream(tempfile);BufferedInputStream bis = new BufferedInputStream(fis);// 构建一个压缩条目,和文件名同名entryDir = tempfile.getAbsolutePath().substring(path.indexOf(':') + 2);// System.out.println(entryDir+"-----"+path);ZipEntry entry = new ZipEntry(entryDir);// 向压缩包中放入一个压缩条目zipOut.putNextEntry(entry);byte[] contents = new byte[1024];int end = -1;while ((end = bis.read(contents)) != -1) {// 将读到的数据写到压缩包中相应的条目zipOut.write(contents, 0, end);zipOut.flush();}bis.close();}}}/** * 解压文件 * * @param file * 指定解压文件的目录 * @param zipFilePath * 要解压的文件的目录 */public static void unZipFile(File file, String zipFilePath)throws Exception {zipoutpath = file.getAbsolutePath();// System.out.println("zipoutpath:"+zipoutpath);// 定义压缩文件ZipFile zipFile = new ZipFile(zipFilePath);// 获得压缩文件的所有目录Enumeration entries = zipFile.entries();// 判断目标文件夹是否存在if (!file.exists()) {file.mkdirs();}while (entries.hasMoreElements()) { // 获得压缩条目的输入流ZipEntry entry = (ZipEntry) entries.nextElement();InputStream fis = zipFile.getInputStream(entry);BufferedInputStream bis = new BufferedInputStream(fis);// 写文件String filepath = zipoutpath.substring(0, 2) + "\\"+ entry.getName();// 建立一个与压缩条目相同的路径filepath = new String(filepath.getBytes("UTF-8"));File _file = new File(filepath);// 将路径转化为文件// System.out.println("_file:"+_file.getAbsolutePath()+" **** entry:"+entry.getName());if (entry.isDirectory()) {// 是文件夹就创建文件目录System.out.println("entry: " + entry.getName());_file.mkdirs();} else {// System.out.println(_file.getParentFile().toString()+"----"+_file.toString());// 指定文件的目录不存在,则创建(即该文件的父文件夹)if (!_file.getParentFile().exists()) {_file.getParentFile().mkdirs();}// 获得输出流FileOutputStream fos = new FileOutputStream(_file);BufferedOutputStream bos = new BufferedOutputStream(fos);byte[] values = new byte[1024];int end = -1;while ((end = bis.read(values)) != -1) {bos.write(values, 0, end);bos.flush();}bos.close();bis.close();}}System.out.println("解压完成...");}public static void main(String[] args) {try {System.out.println("请选择你的操作:\n1.压缩文件\n2.解压文件");Scanner in = new Scanner(System.in);int operNum = in.nextInt();switch (operNum) {case 1:System.out.println("请输入要压缩的文件:");String dir = in.next();zipmethod(new File(dir), dir + ".zip");// 压缩break;case 2:System.out.println("请输入要解压的文件:");String undir = in.next();// System.out.println(undir.substring(0, undir.indexOf('.')));unZipFile(new File(undir.substring(0, undir.indexOf('.'))),undir);// 解压default:break;}} catch (Exception e) {e.printStackTrace();}}}
- 用Java实现文件的解压缩
- 用Java程序实现解压缩文件
- Java实现文件解压缩源码
- java实现压缩、解压缩文件
- java实现对rar文件和zip文件的解压缩
- java压缩解压缩文件工具类的实现
- Java压缩,解压缩的实现
- JAVA实现压缩/解压缩zip文件
- JAVA实现压缩,解压缩zip文件
- java 实现解压缩文件(ZIP/rar)
- java实现解压缩zip文件_01
- java实现linux中gzip压缩解压缩算法:byte[]字节数组,文件,字符串,数据流的压缩解压缩
- java实现解压缩(Unzip)功能的实现
- linux中rar文件解压缩的实现
- 哈夫曼树实现文件的压缩与解压缩
- 琢磨不透的java解压缩文件报错
- Java中对文件的解压缩
- Java文件的压缩与解压缩
- 2012年移动互联网从业者薪资有奖调查
- UVa 465Overflow
- POJ1005 I Think I Need a Houseboat
- SO_TIMESTAMP 数据链路层的接收时间戳
- MFC
- 用Java实现文件的解压缩
- jquery中弹出下拉框并收回
- rqnoj-516
- MFC对象
- POJ1947 树形dp 重做
- Android开发打开文件的Intent及使用
- 三星的S3C2440A 存储器控制器
- Swing如何正确的处理界面中的线程(EDT)
- Android: call to OpenGL ES API with no current context (logged once per thread)