java 将文件/目录下 zip压缩文件解压并删除压缩包
2015-03-03 10:17
666 查看
package filetest; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Enumeration; import java.util.zip.ZipException; import javax.swing.JFileChooser; import org.apache.tools.zip.ZipEntry; import org.apache.tools.zip.ZipFile; public class FileOperation { private JFileChooser fChooser; /** * 选择目录或文件 * * @return */ public File getChooseFile() { fChooser = new JFileChooser("F:\\资料文档\\视频资料\\黑马程序员\\Java基础视频");//默认路径 fChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);// 可选文件和目录 fChooser.setDialogTitle("Please choose a dictionary or a file~"); int result = fChooser.showOpenDialog(fChooser); if (JFileChooser.APPROVE_OPTION == result) {// “确定” return fChooser.getSelectedFile(); } return null; } public static void main(String[] args) { FileOperation fo = new FileOperation(); File file = fo.getChooseFile(); if (file != null) fo.unZipFile(file); System.exit(0); } /** * 解压目录/文件 * * @param file * @throws IOException * @throws ZipException */ public void unZipFile(File file) { if (file.isDirectory()) {// 目录 File[] files = file.listFiles(); for (File tempFile : files) { unZipFile(tempFile); } } else {// 文件 try { if (!file.getName().endsWith(".zip")) return; ZipFile zipFile = new ZipFile(file.getPath(), "GBK"); Enumeration entries = zipFile.getEntries(); String path = file.getParent(); // 获取相对路径 while (entries.hasMoreElements()) { ZipEntry zipEntry = (ZipEntry) entries.nextElement(); String fileName = zipEntry.getName(); File newFile = new File(path + "/" + fileName); createFile(newFile, zipFile, zipEntry); } zipFile.close();//关闭压缩文件,否则不能删除压缩包 file.delete();//删除压缩包 } catch (Exception e) { e.printStackTrace(); } } } /** * 解压压缩包里每个文件 * @param file * @param zipFile * @param zipEntry */ public void createFile(File file, ZipFile zipFile, ZipEntry zipEntry) { if (file.isDirectory()) { if (!file.exists()) { file.mkdir(); } } else { try { InputStream is = null; OutputStream os = null; is = zipFile.getInputStream(zipEntry); os = new FileOutputStream(file); byte[] bytes = new byte[1024]; int len = 0; while ((len = is.read(bytes, 0, bytes.length)) != -1) { os.write(bytes, 0, len); } is.close(); os.close(); } catch (Exception e) { e.printStackTrace(); } } } }
相关文章推荐
- java解压zip或rar压缩文件(有源码和jar包以及对中文乱码的处理方法)
- java实现将ZIP压缩文件解压的工具类
- 解压assets中的zip压缩文件到指定目录
- 递归解压当前目录以及子目录下的所有压缩文件,并删除源文件
- java压缩文件目录 为 zip
- 使用ZLIB生成DLL文件,并进行有中文的ZIP文件压缩与解压操作!支持目录压与解!
- java实现zip文件压缩,解压
- java zip压缩优化版 解决压缩后文件一直被占用无法删除
- 用Java实现ZIP压缩文件和目录程序代码
- java实现将ZIP压缩文件解压的工具类
- Java解压和压缩带密码的zip文件
- java.util.zip 的解压和压缩文件夹
- java使用Apache的ant压缩和解压文件(zip)
- java zip和rar压缩文件的解压
- Java压缩文件/目录成ZIP包最新技巧
- 使用java.util.zip压缩、解压文件
- Java实现Zip压缩/解压缩目录中的所有文件
- java压缩及解压(.zip)文件文件夹
- java中不解压读取zip压缩文件
- java zip压缩文件和目录