博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
文件处理(压缩与解压)
阅读量:2386 次
发布时间:2019-05-10

本文共 2194 字,大约阅读时间需要 7 分钟。

ZipInputStream

ZipOutputStream(ZipEntry)

编写一个程序,在键盘上输入"Hello World", aaa.txt文件中,并将aaa.txt压缩到d:/aaa.zip文件中

Scanner sc = new Scanner(System.in);

String s = sc.nextLine();

System.out.println("输入的内容为: " +s);

try {

BufferedWriter bw = new BufferedWriter(new FileWriter("d:\\aaa.txt"));

bw.write(s);

bw.flush();

bw.close();

}、、、

压缩

book.zip("D:\\MyZipTest.zip",new File("D:\\aaa.txt"));

//inputFile,要压缩的文件或者文件夹

//zipFileName,压缩后的zip文件名称

private void zip(String zipFileName,File inputFile) throws IOException,Exception{

System.out.println("正在压缩中、、、");

ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFileName));

BufferedOutputStream bo = new BufferedOutputStream(out);

zip(out,inputFile,inputFile.getName(),bo);

bo.close();

out.close();//输出流关闭

System.out.println("压缩完成、、、");

}

//方法重载

private void zip(ZipOutputStream out ,File f ,String str,BufferedOutputStream bo) throws IOException,Exception{

if(f.isDirectory()){//测试此抽象路径名表示的文件是否是一个目录

File[] fl = f.listFiles();// 返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件

if(fl.length == 0){

out.putNextEntry(new ZipEntry(str + "/"));//创建zip压缩进入点str

System.out.println(str + "/");

}

for(int i =0;i < fl.length;i++){

zip(out,fl[i],str + "/" + fl[i].getName(),bo);//递归遍历子文件夹

}

System.out.println("第 " + k + " 次递归");

k++;

}else {

out.putNextEntry(new ZipEntry(str));//创建zip压缩进入点str

System.out.println(str);

FileInputStream in = new FileInputStream(f);

BufferedInputStream bi = new BufferedInputStream(in);

int b;

while((b = bi.read()) != -1){

bo.write(b);//将字节流写入当前zip目录

}

bi.close();

in.close();//输出流关闭

}

解压

ZipInputStream Zin = new ZipInputStream(new FileInputStream("D:\\MyZipTest.zip"));//输入源zip路径

           BufferedInputStream Bin = new BufferedInputStream(Zin);  

            String Parent="D:\\bbb";//输出路径(文件夹目录)  

            File Fout=null;  

            ZipEntry entry;

            

            try {  

            

             while((entry = Zin.getNextEntry())!=null && !entry.isDirectory()){  

                    

             Fout=new File(Parent,entry.getName());  

                    

             if(!Fout.exists()){  

                    

             (new File(Fout.getParent())).mkdirs();  

                    }  

            

                    FileOutputStream out = new FileOutputStream(Fout);  

                    BufferedOutputStream Bout = new BufferedOutputStream(out);  

                    int b;  

                    

                    while((b = Bin.read())!=-1){  

                    

                     Bout.write(b);  

                    }

                    

                    Bout.close();  

                    out.close();  

                    

                    System.out.println(Fout + "解压成功");      

                }

            

                Bin.close();

                Zin.close();

转载地址:http://uiiab.baihongyu.com/

你可能感兴趣的文章
Redis 基础命令 --- String篇
查看>>
Redis 基础命令 --- Hash篇
查看>>
Redis 基础命令 --- Set篇
查看>>
Redis数据库篇 -- 生存时间
查看>>
面向对象设计基本原则
查看>>
Redis数据库篇 -- 事务
查看>>
hadoop 完全分布式环境搭建
查看>>
HDFS 回收站
查看>>
hadoop 完全分布式HA高可用集群(手工切换)搭建
查看>>
hadoop 完全分布式HA高可用集群(自动切换)搭建
查看>>
Hbase shell常见命令
查看>>
看看这同一句sql,scan index占用的资源大了很多!!
查看>>
couldn't set locale correctly报错解决
查看>>
回收基表的空间,造成物化视图只刷新了一部分数据
查看>>
ORA-12052,不能建立快速刷新物化视图的解决
查看>>
物化视图comlete刷新会产生大量的日志
查看>>
Mysql cluster slave server的自动检测与修复
查看>>
solaris同步时钟
查看>>
mysql升级
查看>>
V$sql_text v$sqlarea v$sql 的区别
查看>>