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.