java将文件夹或文件进行压缩
2017-08-22 10:01
501 查看
PS:下面main方法有演示;
1,导入jar
<!-- 压缩包 --> <dependency> <groupId>org.apache.ant</groupId> <artifactId>ant</artifactId> <version>1.9.4</version> </dependency>
如果你不是maven,那么下载
[ ant.jar包下载]2,示例代码
import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.zip.CRC32; import java.util.zip.CheckedOutputStream; import org.apache.tools.zip.ZipEntry; import org.apache.tools.zip.ZipOutputStream; public class FileCompress { static final int BUFFER = 8192; //初始化 private File zipFile; public FileCompress(String pathName) { zipFile = new File(pathName); } /** * 压缩文件 * @param srcPathName */ public void compress(String srcPathName) { File file = new File(srcPathName); if (!file.exists()){ throw new RuntimeException(srcPathName + "不存在!"); } try { FileOutputStream fileOutputStream = new FileOutputStream(zipFile); CheckedOutputStream cos = new CheckedOutputStream(fileOutputStream, new CRC32()); //不加CRC32,一样可以生成文件。关于数据如何校验,请高手指点 ZipOutputStream out = new ZipOutputStream(cos); out.setEncoding("gbk"); //如果不加此句,压缩文件依然可以生成,只是在打开和解压的时候,会显示乱码,但是还是会解压出来 String basedir = ""; compress(file, out, basedir); out.close(); } catch (Exception e) { throw new RuntimeException(e); } } /** * 压缩一个目录 * @param dir * @param out * @param basedir */ private void compressDirectory(File dir, ZipOutputStream out, String basedir) { if (!dir.exists())return; File[] files = dir.listFiles(); for (int i = 0; i < files.length; i++) { /* 递归 */ compress(files[i], out, basedir + dir.getName() + "/"); } } private void compress(File file, ZipOutputStream out, String basedir) { /* 判断是目录还是文件 */ if (file.isDirectory()) { this.compressDirectory(file, out, basedir); } else { this.compressFile(file, out, basedir); } } /** * 压缩一个文件 * @param file * @param out * @param basedir */ private void compressFile(File file, ZipOutputStream out, String basedir) { if (!file.exists()) { return; } try { BufferedInputStream bis = new BufferedInputStream( new FileInputStream(file)); ZipEntry entry = new ZipEntry(basedir + file.getName()); out.putNextEntry(entry); int count; byte data[] = new byte[BUFFER]; while ((count = bis.read(data, 0, BUFFER)) != -1) { out.write(data, 0, count); } bis.close(); } catch (Exception e) { throw new RuntimeException(e); } } //main测试 public static void main(String[] args) { FileCompress zc = new FileCompress("H://中文.zip"); zc.compress("H://test中文"); //压缩一个文件夹 System.out.println("123"); } }
相关文章推荐
- 使用java对文件或文件夹进行压缩和加密
- 使用java对文件或文件夹进行压缩和加密
- 使用java对文件或文件夹进行压缩和加密
- 使用java对文件或文件夹进行压缩和加密
- Java 针对文件与文件夹进行压缩的方法
- 使用java对文件或文件夹进行压缩和加密
- 使用java对文件或文件夹进行压缩和加密
- 使用Java zip包和apach 的ant包对文件、文件夹进行压缩,兼容中文
- 使用java对文件或文件夹进行压缩和加密
- 【转载】用java压缩文件夹/文件
- java 压缩文件,文件夹,和解压缩文件夹
- 用java压缩文件夹/文件
- Java中使用Ant压缩指定文件夹或文件
- ASP.NET上传文件或文件夹并进行压缩及解压
- JAVA实现压缩文件或文件夹
- java实现zip压缩文件/文件夹
- Java 解压和压缩文件(文件夹)
- Java压缩解压文件/文件夹
- c#利用zlib.net对文件进行deflate流压缩(和java程序压缩生成一样)
- c#利用zlib.net对文件进行deflate流压缩(和java程序压缩生成一样)