流的總結

一:節點流:
	1.字節流:能處理一切文件,純文本、視頻、圖片、音頻
		1)文件字節流:(以文件爲源頭)FileInputStream
							    FileOutputStream
		2)數組字節流:(以數組爲源頭)ByteArrayInputStream
							    ByteArrayOutputStream   toByteArray()新增方法,操作不同
	2.字符流:只能處理純文本文件
		1)文件字節流:FileReader
				      FileWriter
		2)數組字節流:CharArrayInputStream
				      CharArrayOutputStream
					  
二:處理流:增強節點流的功能,提高可靠性
	1.緩衝流:1)字節緩衝流:BufferedInputStream	BufferedOutputStream
		        2)字符緩衝流:BufferedReader   readLine()  一行一行的讀取
		   			      BufferedWriter   newLLine()  換行  	相當於"\r\n"
		   			     注意運用新增方法時,不能使用多態
    2.轉換流:只能把字節流轉換成字符流的,不能把字符流轉換成字節流
		1).編碼與解碼概念:
		         編碼:二進制	            編碼字符集		字符
		         解碼:字符		解碼字符集		二進制
		2).亂碼原因:
			1)編碼與解碼字符集不統一
			2)字節缺少,長度丟失
		3).	InputStreamReader	解碼(讀取操作)
			OutputStreamWriter	編碼(寫入操作)
	3.處理    基本數據類型+String  保存類型
			DataInputStream   readXxx()
			DataOutputStream  writeXxx()
			注意點:1)讀取的順序與寫入的順序必須相同
				      2)寫入到文件中的內容由於保存了數據類型,因此我們無法識別,但計算機可以識別
	4.處理  對象   保存對象
			其實4相當於3的增強版,除了3的功能外,還可以處理對象類型:
		    ObjectInputStream	readObject()  對象的反序列化
		    ObjectOutputStream	writeObject()  對象的序列化
		          注意:1) 不是所用的對象都能序列化    必須是實現了java.io.Serializable接口才能序列化
		                    2) 不是所有的屬性都需要序列化,不想序列化的屬性使用  transient關鍵字
	5.打印流:PrintStream
		   System.in    從鍵盤輸入
		   System.out	從控制檯輸出
		   System.err	和out差不多
		   
	         注意:1)可以改變流向,比如不從鍵盤接收數據,而從文件中接收數據、輸出數據到文件而不是到控制檯
	       2)在System中定義了標準控制檯:FileDescriptor.in
								  FileDescriptor.out
			可以使用setIn() 和 setOut() 方法進行重定向
三:在流的操作中經常需要關閉流,大量的關閉會很繁瑣,基於封裝的思想,可以建立一個工具類來專門關閉流:

/**
	 * 工具類:關閉流
	 * 可變參數:... 表示可以有很多參數,只能在形參的最後一個位置,處理起來和數組一樣
	 * jdk1.7新增特性可以用try-with-resource實現該功能
	 */
	/*
	public static void closeAll(String str, Closeable ... io) {
		
	}// 沒有問題
	public static void closeAll(Closeable ... io, String str) {
		
	}// 有問題
	*/
	

	/**
	 * 面向接口編程,實現了Closeable接口的類都有close()方法
	 * @param obj
	 */
	public static void closeAll(Closeable ... io) {
		for(Closeable temp: io) {
			if(null != temp) {
				try {
					temp.close();
				} catch (IOException e) {
					System.out.println("關閉流異常");
					e.printStackTrace();
				}
			}
		}
	}


發佈了44 篇原創文章 · 獲贊 9 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章