引言:
關于java IO流的操作是非常常見的,基本上每個項目都會用到,每次遇到都是去網上找一找就行了,屢試不爽。上次突然一個同事問了我java文件的讀取,我一下子就懵了第一反應就是去網上找,雖然也能找到,但自己總感覺不是很踏實,所以今天就抽空看了看java IO流的一些操作,感覺還是很有收獲的,順便總結些資料,方便以后進一步的學習...
IO流的分類:
1、根據流的數據對象來分:
高端流:所有的內存中的流都是高端流,比如:InputStreamReader
低端流:所有的外界設備中的流都是低端流,比如InputStream,OutputStream
如何區分:所有的流對象的后綴中包含Reader或者Writer的都是高端流,反之,則基本上為低端流,不過也有例外,比如PrintStream就是高端流
2、根據數據的流向來分:
輸出流:是用來寫數據的,是由程序(內存)--->外界設備
輸入流:是用來讀數據的,是由外界設備--->程序(內存)
如何區分:一般來說輸入流帶有Input,輸出流帶有Output
3、根據流數據的格式來分:
字節流:處理聲音或者圖片等二進制的數據的流,比如InputStream
字符流:處理文本數據(如txt文件)的流,比如InputStreamReader
如何區分:可用高低端流來區分,所有的低端流都是字節流,所有的高端流都是字符流
4、根據流數據的包裝過程來分:
原始流:在實例化流的對象的過程中,不需要傳入另外一個流作為自己構造方法的參數的流,稱之為原始流。
包裝流:在實例化流的對象的過程中,需要傳入另外一個流作為自己構造方法發參數的流,稱之為包裝流。
如何區分:所以的低端流都是原始流,所以的高端流都是包裝流
IO流對象的繼承關系(如下圖):
下面來看一些具體的代碼例子:
按字節來讀取文件
按字符來讀取文件
} catch (Exception e1) {
e1.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
}
}
}
}
按行來讀取文件
將一個文件的內容寫入另一個文件(按行來寫)
新聞熱點
疑難解答