如何用Java实现文件的长尾词压缩与解压操作?
- 内容介绍
- 文章标签
- 相关推荐
本文共计975个文字,预计阅读时间需要4分钟。
java代码压缩实现,包名:com.hjh.demo.zip;导入:import java.io.BufferedInputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import java.util.zip.ZipEntry;import java.util.zip.ZipOutputStream;
代码压缩实现package com.hjh.demo.zip; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.util.zip.CRC32; import java.util.zip.CheckedOutputStream; //使用org.apache.tools.zip这个就不会中文乱码 来自于ant.jar import org.apache.tools.zip.ZipEntry; import org.apache.tools.zip.ZipOutputStream; //使用java.util.zip原生ZipOutputStream与ZipEntry会中文乱码 //import java.util.zip.ZipOutputStream; //import java.util.zip.ZipEntry; public class TestZip { static String filePath = "F:/test/json.txt";//需要压缩的文件夹完整路径 static String fileName = "zip";//需要压缩的文件夹名 static String outPath = "F:/test/zip/Test.zip";//压缩完成后保存为Test.zip文件,名字随意 public static void main(String args[]) throws Exception { OutputStream is = new FileOutputStream(outPath);//创建Test.zip文件 CheckedOutputStream cos = new CheckedOutputStream(is, new CRC32());//检查输出流,采用CRC32算法,保证文件的一致性 ZipOutputStream zos = new ZipOutputStream(cos);//创建zip文件的输出流 zos.setEncoding("GBK");//设置编码,防止中文乱码 File file = new File(filePath);//需要压缩的文件或文件夹对象 // ZipFile(zos,file);//压缩文件的具体实现函数 zipFileContent(zos,file); zos.close(); cos.close(); is.close(); System.out.println("压缩完成"); } public static void zipFileContent(ZipOutputStream zos,File file) throws Exception { if(file.isDirectory()) { for(File f : file.listFiles()) { zipFileContent(zos, f); } } else { //用字节方式读取源文件 InputStream is = new FileInputStream(file.getPath()); //创建一个缓存区 BufferedInputStream bis = new BufferedInputStream(is); //字节数组,每次读取1024个字节 byte [] b = new byte[1024]; zos.putNextEntry(new ZipEntry(file.getName())); //循环读取,边读边写 while(bis.read(b) != -1) { zos.write(b);//写入压缩文件 } //关闭流 bis.close(); is.close(); } } //递归,获取需要压缩的文件夹下面的所有子文件,然后创建对应目录与文件,对文件进行压缩 public static void ZipFile(ZipOutputStream zos,File file) throws Exception { if(file.isDirectory()) { //创建压缩文件的目录结构 zos.putNextEntry(new ZipEntry(file.getPath().substring(file.getPath().indexOf(fileName))+File.separator)); for(File f : file.listFiles()) { ZipFile(zos,f); } } else { //打印输出正在压缩的文件 System.out.println("正在压缩文件:"+file.getName()); //创建压缩文件 zos.putNextEntry(new ZipEntry(file.getPath().substring(file.getPath().indexOf(fileName)))); //用字节方式读取源文件 InputStream is = new FileInputStream(file.getPath()); //创建一个缓存区 BufferedInputStream bis = new BufferedInputStream(is); //字节数组,每次读取1024个字节 byte [] b = new byte[1024]; //循环读取,边读边写 while(bis.read(b)!=-1) { zos.write(b);//写入压缩文件 } //关闭流 bis.close(); is.close(); } } } 代码解压实现
package com.hjh.demo.zip;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import java.util.zip.CRC32;
import java.util.zip.CheckedInputStream;
//使用org.apache.tools.zip这个就不会中文乱码 来自于ant.jar
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;
//使用java.util.zip原生ZipOutputStream与ZipEntry会中文乱码
//import java.util.zip.ZipEntry;
//import java.util.zip.ZipFile;
public class TestUnzip
{
static String zipPath = "F:/test/zip/Test.zip";//需要解压的压缩文件
static String outPath = "F:/test/zip/unzip/";//解压完成后保存路径,记得"\\"结尾哈
public static void main(String args[]) throws Exception
{
ZipFile zipFile = new ZipFile(zipPath,"GBK");//压缩文件的实列,并设置编码
//获取压缩文中的所以项
for(Enumeration
本文共计975个文字,预计阅读时间需要4分钟。
java代码压缩实现,包名:com.hjh.demo.zip;导入:import java.io.BufferedInputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import java.util.zip.ZipEntry;import java.util.zip.ZipOutputStream;
代码压缩实现package com.hjh.demo.zip; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.util.zip.CRC32; import java.util.zip.CheckedOutputStream; //使用org.apache.tools.zip这个就不会中文乱码 来自于ant.jar import org.apache.tools.zip.ZipEntry; import org.apache.tools.zip.ZipOutputStream; //使用java.util.zip原生ZipOutputStream与ZipEntry会中文乱码 //import java.util.zip.ZipOutputStream; //import java.util.zip.ZipEntry; public class TestZip { static String filePath = "F:/test/json.txt";//需要压缩的文件夹完整路径 static String fileName = "zip";//需要压缩的文件夹名 static String outPath = "F:/test/zip/Test.zip";//压缩完成后保存为Test.zip文件,名字随意 public static void main(String args[]) throws Exception { OutputStream is = new FileOutputStream(outPath);//创建Test.zip文件 CheckedOutputStream cos = new CheckedOutputStream(is, new CRC32());//检查输出流,采用CRC32算法,保证文件的一致性 ZipOutputStream zos = new ZipOutputStream(cos);//创建zip文件的输出流 zos.setEncoding("GBK");//设置编码,防止中文乱码 File file = new File(filePath);//需要压缩的文件或文件夹对象 // ZipFile(zos,file);//压缩文件的具体实现函数 zipFileContent(zos,file); zos.close(); cos.close(); is.close(); System.out.println("压缩完成"); } public static void zipFileContent(ZipOutputStream zos,File file) throws Exception { if(file.isDirectory()) { for(File f : file.listFiles()) { zipFileContent(zos, f); } } else { //用字节方式读取源文件 InputStream is = new FileInputStream(file.getPath()); //创建一个缓存区 BufferedInputStream bis = new BufferedInputStream(is); //字节数组,每次读取1024个字节 byte [] b = new byte[1024]; zos.putNextEntry(new ZipEntry(file.getName())); //循环读取,边读边写 while(bis.read(b) != -1) { zos.write(b);//写入压缩文件 } //关闭流 bis.close(); is.close(); } } //递归,获取需要压缩的文件夹下面的所有子文件,然后创建对应目录与文件,对文件进行压缩 public static void ZipFile(ZipOutputStream zos,File file) throws Exception { if(file.isDirectory()) { //创建压缩文件的目录结构 zos.putNextEntry(new ZipEntry(file.getPath().substring(file.getPath().indexOf(fileName))+File.separator)); for(File f : file.listFiles()) { ZipFile(zos,f); } } else { //打印输出正在压缩的文件 System.out.println("正在压缩文件:"+file.getName()); //创建压缩文件 zos.putNextEntry(new ZipEntry(file.getPath().substring(file.getPath().indexOf(fileName)))); //用字节方式读取源文件 InputStream is = new FileInputStream(file.getPath()); //创建一个缓存区 BufferedInputStream bis = new BufferedInputStream(is); //字节数组,每次读取1024个字节 byte [] b = new byte[1024]; //循环读取,边读边写 while(bis.read(b)!=-1) { zos.write(b);//写入压缩文件 } //关闭流 bis.close(); is.close(); } } } 代码解压实现
package com.hjh.demo.zip;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import java.util.zip.CRC32;
import java.util.zip.CheckedInputStream;
//使用org.apache.tools.zip这个就不会中文乱码 来自于ant.jar
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;
//使用java.util.zip原生ZipOutputStream与ZipEntry会中文乱码
//import java.util.zip.ZipEntry;
//import java.util.zip.ZipFile;
public class TestUnzip
{
static String zipPath = "F:/test/zip/Test.zip";//需要解压的压缩文件
static String outPath = "F:/test/zip/unzip/";//解压完成后保存路径,记得"\\"结尾哈
public static void main(String args[]) throws Exception
{
ZipFile zipFile = new ZipFile(zipPath,"GBK");//压缩文件的实列,并设置编码
//获取压缩文中的所以项
for(Enumeration

