- import java.io.BufferedInputStream;
- import java.io.BufferedOutputStream;
- import java.io.BufferedReader;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.FileReader;
- import java.io.OutputStreamWriter;
- import java.io.PrintWriter;
- import java.util.zip.ZipEntry;
- import java.util.zip.ZipInputStream;
- /**使用Java原生态 解压方式,解压 zip 和 rar 文件。
- * 压缩文件夹里面保存着 2个文本文件, 提取出他们的文件信息并打印出来。
- *
- * 我实现的原理是:
- * ①首先使用 ZipInputStream 读取一个 zip文件。
- * ②遍历出他里面的文件信息(他的名字)
- * ③拿到他的名字以后。使用 ZipInputStream 读取 他的信息,并使用 OutputStream 将里面的文件 提取出来。
- * ④然后在通过 拿到的 文件 名字。通过一个方法传入名字,将他打印出来(用读取流读取,和输出流打印在屏幕)
- *
- * */
- public class Demo
- {
- public static void main(String[] args) throws Exception
- {
- ZipInputStream zipIs = new ZipInputStream(new BufferedInputStream(new FileInputStream("a.zip"))); //获取zip的流对象。
-
- ZipEntry zipEntry;
- while((zipEntry=zipIs.getNextEntry()) != null) //进行遍历里面的条目。
- {
- String fileName = zipEntry.getName(); //返回一个文件名称
- // System.out.println(zipEntry.clone());
-
- int flag ;
- byte[] data = new byte[1024];
- BufferedOutputStream bufw = new BufferedOutputStream(new FileOutputStream(fileName)); //在使用一个字节输出流将压缩文件输出
- while( (flag = zipIs.read(data))!=-1)
- {
- bufw.write(data, 0, flag);
- bufw.flush();
- }
-
-
- println(new File(fileName)); //通过一个方法。传入名字 将他读取出来。并打印在控制台上面
- }
-
- zipIs.close();
- }
-
-
- /**既然是文本文件,就使用 Reader,和 Writer 即可
- * */
- public static void println(File path) throws Exception
- {
- BufferedReader bufr = new BufferedReader(new FileReader(path));
- PrintWriter pr = new PrintWriter(new OutputStreamWriter(System.out),true);
- System.out.print(path.getName() + ",文件中的类容是:");
- String flag;
- while((flag=bufr.readLine())!=null)
- {
- pr.println(flag);
- }
-
- bufr.close();
- }
- }
复制代码
我只是复制了我的方法。 |