I/O流表示輸入源或輸出目標,流能夠表示許多不一樣類型的源和目標,包括磁盤文件、設備、其餘程序和內存數組。java
流支持許多不一樣類型的數據,包括簡單字節、原始數據類型、本地化字符和對象,有些流只是傳遞數據,其餘人以有用的方式操縱和轉換數據。git
不管它們如何在內部工做,全部流都爲使用它們的程序提供相同的簡單模型:流是一系列數據,程序使用輸入流從源讀取數據,一次一個條目:github
程序使用輸出流將數據寫入目標,一次一個條目:segmentfault
在本課程中,咱們將看到能夠處理各類數據的流,從原始值到高級對象。數組
上圖所示的數據源和數據目的地能夠是保存、生成或使用數據的任何內容,顯然這包括磁盤文件,但源或目標也能夠是另外一個程序、外圍設備,網絡socket或數組。網絡
在下一節中,咱們將使用最基本的流(字節流)來演示流I/O的常見操做,對於示例輸入,咱們將使用示例文件xanadu.txt,其中包含如下內容:less
In Xanadu did Kubla Khan A stately pleasure-dome decree: Where Alph, the sacred river, ran Through caverns measureless to man Down to a sunless sea.