JAVA中,为了读取数据和写入数据,有一个流的概念。在JAVA中有顶层流的接口或抽象类。
输入流(InputStream):从外部(硬盘上文件数据、网络中的数据……)读取到程序中,这就是输入的过程。
输出流(OutputStream):将程序内部中的数据写入到外部的文件中,这就是输出的过程。上面说了有顶层流的接口或抽象类,InputStream,OutputStream 就是顶层抽象类,他们有多种实用于不同用途的具体实现类。这些类都可直接使用的,一般输入流有Input一词,输出流有Output一词
流的分类
字节流:InputStream, OutputStream 数据是以字节为单位读取和写入的
缓冲流:BufferedInputStream, BufferedOutputStream
缓冲流概念:
在使用流读写数据的时候,比如按字节为单位读取,那么获取数据的过程是这样的,外部文件---- 操作系统内存--- JVM内存-----程序内存,所以获取一个字节要有这么多环节。
缓冲输入流就是在JVM中会开辟一块缓冲区的内存空间,然后将的数据读取到缓冲区中,直到读满这个缓冲,才会将缓冲区中的数据获取到程序中。
缓冲输出流就是在JVM中会开辟一块缓冲区的内存空间,然后将程序中的数据写入到缓冲区中,直到读满这个缓冲,才会将缓冲区中的数据写入到文件中。
数据流: DataInputStream, DataOutputStream 数据是8中基本数据类型为单位读取和写入的
对象流: ObjectInputStream, ObjectOutputStream 数据是以对象为单位读取和写入的
流就像水管,使用时先实例化流对象,相当于把文件放到了水管中,即可自由输送,也就是可以执行相关操作。所以,当你要使用流时,先明白自己是要输入流还是输出流,然后选择相应的具体的实现类,类中的方法可查看API文档
下面以读取一个文件数据并打印的程序为例
好了,这个是简单的文件读取操作,其中流的方法要自己好好看看API文档。