Java使用ZipInputStream类(简单)解压缩文件,具体方法如下:

Java使用ZipInputStream类(简单)解压缩文件,具体方法如下:

package cn.oop.lh.IOs;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;

public class tests1 {
     

	public static void main(String[] args) {
     
		try {
     
			test6();
		} catch (Exception e) {
     
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}
	}

	/**
	 * 实现解压缩方法
	 */
	public static void test6() throws Exception {
     
		// 1.定义需要解压缩文件File对象
		File src1 = new File("G:/测试文件夹/wrod.zip");
		// 2.设定解压缩之后的路径
		File src2 = new File("G:/测试文件夹" + File.separator + InterceptingFileSuffixes(src1.getName(), false));
		MyMkdirs(src2);
		// 3.定义解压缩ZipInputStream对象
		ZipInputStream zinput = new ZipInputStream(new FileInputStream(src1));
		// 4.获取解压缩目录ZipEntry对象
		ZipEntry entry = zinput.getNextEntry();
		// 5.创建指定条目(entry)文件
		File file = new File(src2.getPath(), entry.toString());
		file.createNewFile();
		// 6.读取写入数据
		FileOutputStream fOutput = new FileOutputStream(file);
		byte[] bs = new byte[1024];
		while (-1 != (zinput.read(bs))) {
     
			fOutput.write(bs);
			System.out.println("解压缩中.......");
		}
		// 7.释放系统资源
		fOutput.flush();
		fOutput.close();
		zinput.close();
		System.out.println("解压完成!!!!!!!!");
	}

	/**
	 * path代表路径, true代表截取字符'.'之后的文件后缀,false代表截取'.'之前的字符串
	 * 
	 * @param path
	 * @param b
	 */
	protected static String InterceptingFileSuffixes(String path, boolean b) {
     
		return b == true ? path.substring(path.indexOf("."), path.length()) : path.substring(0, path.indexOf("."));
	}

	/**
	 * 查看给定的File对象文件存不存在,如果不存在,则构建一个
	 * 
	 * @param file
	 */
	protected static void MyMkdirs(File file) {
     
		if (!file.exists()) {
     
			file.mkdirs();
			System.out.println("因为所选路径不存在,系统默认构建指定路径");
		} else {
     
			System.out.println("文件目录已经存在");
		}
	}
}

你可能感兴趣的:(java)