當前位置:文書都 >

事務文書 >學習總結 >

java io流學習總結

java io流學習總結

 一、什麼是流?

java io流學習總結

流就是字節序列的抽象概念,能被連續讀取數據的數據源和能被連續寫入數據的接收端就是流,流機制是Java及C++中的一個重要機制,通過流我們可以自由地控制文件、內存、IO設備等數據的流向。而IO流就是用於處理設備上的數據,如:硬盤、內存、鍵盤錄入等。IO流根據處理類型的不同可分為字節流和字符流,根據流向的不同可分為輸入流和輸出流。

二、字節流和字符流的區別:

字符流,因為文件編碼的不同,就有了對字符進行高效操作的字符流對象,它的原理就是基於字節流讀取字節時去查了指定的碼錶。它和字節流的區別有兩點:1.在讀取數據的時候,字節流讀到一個字節就返回一個字節,字符流使用了字節流讀到一個或多個字節(一個中文對應的字節數是兩個,在UTF-8碼錶中是3個字節)時,先去查指定的編碼表,再將查到的字符返回;2.字節流可以處理所有類型的數據,如jpg、avi、mp3、wav等等,而字符流只能處理字符數據。所以可以根據處理的文件不同考慮使用字節流還是字符流,如果是純文本數據可以優先考慮字符流,否則使用字節流。

 三、IO體系,所具備的基本功能就是讀和寫:

1.字符流

|-- Reader(讀)

|-- Writer(寫)

Reader

|--InputStreamReader

|--FileReader:用於處理文件的字符讀取流對象

Writer

|--OutputStreamWriter

|--FileWriter:用於處理文件的字符寫入流對象

其實很容易就可以看出來,IO體系中的子類名後綴絕大部分是父類名稱,而前綴則是體現子類特有功能的名稱。

Reader中常見的方法:

|--int read()

讀取一個字符,並返回讀到的這個字符,讀到流的末尾則返回-1。

|--int read(char[])

將讀到的字符存入指定的數組中,返回的是讀到的字符個數,

讀到流的末尾則返回-1。

|--close()

讀取字符其實用的是window系統的功能,就希望使用完畢後,

進行資源的釋放。

FileReader除了自己的構造函數外沒有特有的方法:

|--用於讀取文本文件的`流對象。

|--用於關聯文本文件。

|--構造函數FileReader(String fileName)

在讀取流對象初始化時,必須要指定一個被讀取的文件,

如果該文件不存在則會發生FileNotFoundException異常。

Writer中常見的方法:

|--write()

將一個字符寫入到流中。

|--write(char[])

將一個字符數組寫入到流中。

|--writer(String)

將一個字符寫入到流中。

|--flush()

刷新流,將流中的數據刷新到目的地中,流還存在。

|--close()

關閉資源,在關閉錢會先調用flush(), 刷新流中的數據到目的地。

FileWriter,除了自己的構造函數外沒有特有的方法:

|--該類的特點

|--用於處理文本文件

|--沒有默認的編碼表

|--有臨時緩衝

|--構造函數,在寫入流對象初始化時,必須要有一個存儲數據的目的地。

|--FileWriter(String fileName),該構造器是幹什麼用的呢?

|--調用系統資源

|--在指定位置創建一個文件,如果該文件已經存在則被覆蓋。

|--FileWriter(String filename,Boolean append),這構造器的作用是?

當傳入的boolean類型的值為true時,會在指定文件末尾處進行數據的續寫。

清單1,將文本數據保存到文件中代碼

private static void test1(){

FileWriter fw=null;

try {

//初始化FileWriter對象,指定文件名已經存儲路徑

fw=new FileWriter("D:/");

e("將字符串寫入流");

//將流中的數據刷新到目的地,流還在

h();

e("將字符串寫入流");

} catch (IOException e) {

tStackTrace();

}finally{

if(fw!=null){

try {

e();

} catch (IOException e1) {

tStackTrace();

}

}

}

}

清單2,讀取一個已有文本文件,並將文本內容打印出來代碼

private static void test2(){

FileReader fr=null;

try {

//初始化FileReader對象,指定文件路徑

fr=new FileReader("D:/");

int ch=0;

while((ch=())!=-1){

//每次讀取一個字符,直到讀到末尾-1為止

  • 文章版權屬於文章作者所有,轉載請註明 https://wenshudu.com/zh-hk/shiwuwenshu/xuexizongjie/xzyqlx4.html
專題