import java.io.File ; import java.io.FileInputStream ; import java.io.InputStream ; import java.util.zip.ZipEntry ; import java.util.zip.ZipOutputStream ; import java.io.FileOutputStream ; public class ZipOutputStreamDemo01{ public static void main(String args[]) throws Exception{ // 全部异常抛出 File file = new File("d:" + File.separator + "mldn.txt") ; // 定义要压缩的文件 File zipFile = new File("d:" + File.separator + "mldn.zip") ; // 定义压缩文件名称 InputStream input = new FileInputStream(file) ; // 定义文件的输入流 ZipOutputStream zipOut = null ; // 声明压缩流对象 zipOut = new ZipOutputStream(new FileOutputStream(zipFile)) ; zipOut.putNextEntry(new ZipEntry(file.getName())) ; // 设置ZipEntry对象 zipOut.setComment("www.mldnjava.cn") ; // 设置注释 int temp = 0 ; while((temp=input.read())!=-1){ // 读取内容 zipOut.write(temp) ; // 压缩输出 } input.close() ; // 关闭输入流 zipOut.close() ; // 关闭输出流 } };
import java.io.File ; import java.io.FileInputStream ; import java.io.InputStream ; import java.util.zip.ZipEntry ; import java.util.zip.ZipOutputStream ; import java.io.FileOutputStream ; public class ZipOutputStreamDemo02{ public static void main(String args[]) throws Exception{ // 全部异常抛出 File file = new File("d:" + File.separator + "mldn") ; // 定义要压缩的文件夹 File zipFile = new File("d:" + File.separator + "mldndir.zip") ; // 定义压缩文件名称 InputStream input = null ; // 定义文件输入流 ZipOutputStream zipOut = null ; // 声明压缩流对象 zipOut = new ZipOutputStream(new FileOutputStream(zipFile)) ; zipOut.setComment("www.mldnjava.cn") ; // 设置注释 int temp = 0 ; if(file.isDirectory()){ // 判断是不是文件夹 File lists[] = file.listFiles() ; // 列出所有文件 for(int i=0;i<lists.length;i++){ input = new FileInputStream(lists[i]) ; // 定义文件的输入流 zipOut.putNextEntry(new ZipEntry(file.getName() +File.separator+lists[i].getName())) ; // 设置ZipEntry对象 while((temp=input.read())!=-1){ // 读取内容 zipOut.write(temp) ; // 压缩输出 } input.close() ; // 关闭输入流 } } zipOut.close() ; // 关闭输出流 } };
import java.io.File ; import java.io.FileInputStream ; import java.io.InputStream ; import java.util.zip.ZipEntry ; import java.util.zip.ZipOutputStream ; import java.util.zip.ZipFile ; import java.io.FileOutputStream ; public class ZipFileDemo01{ public static void main(String args[]) throws Exception{ // 全部异常抛出 File file = new File("d:" + File.separator + "mldn.zip") ; // 找到压缩文件 ZipFile zipFile = new ZipFile(file) ; // 实例化ZipFile对象 System.out.println("压缩文件的名称:" + zipFile.getName()) ; // 获得压缩文件的名称 } };经过ZipFile文件,为mldn.zip进行解压缩操做。
import java.io.File ; import java.io.FileInputStream ; import java.io.InputStream ; import java.io.OutputStream ; import java.util.zip.ZipEntry ; import java.util.zip.ZipOutputStream ; import java.util.zip.ZipFile ; import java.io.FileOutputStream ; public class ZipFileDemo02{ public static void main(String args[]) throws Exception{ // 全部异常抛出 File file = new File("d:" + File.separator + "mldn.zip") ; // 找到压缩文件 File outputFile = new File("d:" + File.separator + "mldn_unzip.txt") ; // 定义解压缩的文件名称 ZipFile zipFile = new ZipFile(file) ; // 实例化ZipFile对象 ZipEntry entry = zipFile.getEntry("mldn.txt") ; // 获得一个压缩实体 OutputStream out = new FileOutputStream(outputFile) ; // 实例化输出流 InputStream input = zipFile.getInputStream(entry) ; // 获得一个压缩实体的输入流 int temp = 0 ; while((temp=input.read())!=-1){ out.write(temp) ; } input.close() ; // 关闭输入流 out.close() ; // 关闭输出流 } };以上的操做操做中,有一个问题,必须知道压缩文件中的每个压缩实例的名称才能够进行解压缩操做,而若是如今假设是一个文件夹呢?
import java.io.File ; import java.io.FileInputStream ; import java.io.InputStream ; import java.util.zip.ZipEntry ; import java.util.zip.ZipInputStream ; import java.io.FileInputStream ; public class ZipInputStreamDemo01{ public static void main(String args[]) throws Exception{ // 全部异常抛出 File zipFile = new File("d:" + File.separator + "mldn.zip") ; // 定义压缩文件名称 ZipInputStream input = null ; // 定义压缩输入流 input = new ZipInputStream(new FileInputStream(zipFile)) ; // 实例化ZIpInputStream ZipEntry entry = input.getNextEntry() ; // 获得一个压缩实体 System.out.println("压缩实体名称:" + entry.getName()) ; input.close() ; } };
import java.io.File ; import java.io.OutputStream ; import java.io.InputStream ; import java.util.zip.ZipEntry ; import java.util.zip.ZipFile ; import java.util.zip.ZipInputStream ; import java.io.FileInputStream ; import java.io.FileOutputStream ; public class ZipInputStreamDemo02{ public static void main(String args[]) throws Exception{ // 全部异常抛出 File file = new File("d:" + File.separator + "mldndir.zip") ; // 定义压缩文件名称 File outFile = null ; // 输出文件的时候要有文件夹的操做 ZipFile zipFile = new ZipFile(file) ; // 实例化ZipFile对象 ZipInputStream zipInput = null ; // 定义压缩输入流 OutputStream out = null ; // 定义输出流,用于输出每个实体内容 InputStream input = null ; // 定义输入流,读取每个ZipEntry ZipEntry entry = null ; // 每个压缩实体 zipInput = new ZipInputStream(new FileInputStream(file)) ; // 实例化ZIpInputStream while((entry = zipInput.getNextEntry())!=null){ // 获得一个压缩实体 System.out.println("解压缩" + entry.getName() + "文件。") ; outFile = new File("d:" + File.separator + entry.getName()) ; // 定义输出的文件路径 if(!outFile.getParentFile().exists()){ // 若是输出文件夹不存在 outFile.getParentFile().mkdir() ; // 建立文件夹 } if(!outFile.exists()){ // 判断输出文件是否存在 outFile.createNewFile() ; // 建立文件 } input = zipFile.getInputStream(entry) ; // 获得每个实体的输入流 out = new FileOutputStream(outFile) ; // 实例化文件输出流 int temp = 0 ; while((temp=input.read())!=-1){ out.write(temp) ; } input.close() ; // 关闭输入流 out.close() ; // 关闭输出流 } input.close() ; } };