io流的分類:
1、根據流的資料物件來分:
高階流:所有的記憶體中的流都是高階流,比如:inputstreamreader
低端流:所有的外界裝置中的流都是低端流,比如inputstream,outputstream
如何區分:所有的流物件的字尾中包含reader或者writer的都是高階流,反之,則基本上為低端流,不過也有例外,比如printstream就是高階流
2、根據資料的流向來分:
輸出流:是用來寫資料的,是由程式(記憶體)--->外界裝置
輸入流:是用來讀資料的,是由外界裝置--->程式(記憶體)
如何區分:一般來說輸入流帶有input,輸出流帶有output
3、根據流資料的格式來分:
位元組流:處理聲音或者等二進位制的資料的流,比如inputstream
字元流:處理文字資料(如txt檔案)的流,比如inputstreamreader
如何區分:可用高低端流來區分,所有的低端流都是位元組流,所有的高階流都是字元流
4、根據流資料的包裝過程來分:
原始流:在例項化流的物件的過程中,不需要傳入另外乙個流作為自己構造方法的引數的流,稱之為原始流。
包裝流:在例項化流的物件的過程中,需要傳入另外乙個流作為自己構造方法發引數的流,稱之為包裝流。
如何區分:所以的低端流都是原始流,所以的高階流都是包裝流
io流物件的繼承關係(如下圖):
下面來看一些具體的**例子:
按位元組來讀取檔案
public按字元來讀取檔案class
readfromfile
in.close();
} catch
(ioexception e)
try }
catch
(exception e1)
finally
catch
(ioexception e1) }}
}
/**按行來讀取檔案* 以字元為單位讀取檔案,常用於讀文字,數字等型別的檔案
*/public
static
void
readfilebychars(string filename)
}reader.close();
} catch
(exception e)
try
else
else}}
}} catch
(exception e1)
finally
catch
(ioexception e1) }}
}
/**將乙個檔案的內容寫入另乙個檔案(按行來寫)* 以行為單位讀取檔案,常用於讀面向行的格式化檔案
*/public
static
void
readfilebylines(string filename)
reader.close();
} catch
(ioexception e)
finally
catch
(ioexception e1) }}
}
publicclass
filetest
catch
(ioexception e1)
tryread.close();
writer.close();
system.out.println("檔案寫入完成...");
} catch
(ioexception e)
}}
java IO流 位元組流讀寫中文
位元組流讀取中文的問題 位元組流在讀中文的時候有可能會讀到半個中文,造成亂碼 fileinputstream fis new fileinputstream yyy.txt byte arr new byte 4 int len while len fis.read arr 1 位元組流寫出中文的問...
java IO 檔案流詳解
本篇博文學習了一下內容 fileinputstream 位元組輸入流 構造方法 讀取檔案 fileoutputstream 位元組輸出流 構造方法 寫入檔案 filerearder 字元輸入流 構造方法 讀取檔案 filewriter 字元輸出流 構造方法 寫出檔案 位元組檔案和字元檔案 總結 構造...
java IO位元組流讀寫檔案
如果是按照資料的流向劃分 輸入流 輸出流以當前程式做參照物,觀察資料是流入還是流出,如果流出,則使用輸出流,如果資料是流入,則使用輸入流。如果按照處理的單位劃分 位元組流 位元組流讀取得都是檔案中二進位制資料,讀取到二進位制資料不會經過任何的處理。字元流 字元流讀取的資料是以字元為單位的 字元流也是...