使用java提供的api對文件進行壓縮解密

練習題目一:zip、rar等格式的壓縮文件經常需要我們解壓,其中JDK提供了原生的API實現了其功能。

題目要求:已知:電腦某盤中有一個test.zip的壓縮包,壓縮包中有a.txt和b.txt兩個文本文件。請用API解壓該壓縮包,並將a.txt和b.txt文本文件中的內容輸出到控制檯。

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 Test021
{
	public static void main(String[] args) throws Exception
	{
		ZipInputStream zipIs = new ZipInputStream(new BufferedInputStream(new FileInputStream("d:/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();
	}

}


更多的還可以參考這個:
http://www.51cto.com/specbook/24/6910.htm
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章