参考网址:inyangxu/archive/2010/11/28/ 流(Stream)的概念源于UNIX中管道(pipe)的概念。在UNIX中,管道是一条不间断的字节流,用来实现程序或进程的通信,或读写外围设备、外部文件等。 一个流,必有源端和目的端,它们可以是计算机内存的某些区域,也可以是磁盘文件,上的某个URL。 流的方向是重要的,根据流的方向,流可以分为2类:输入流和输出流。用户可以从输入流中读取信息,但不能写它。相反,对输出流,只能往输入流写,但不能读它。 实际上,流的源端和目的端可简单的看成是字节的生产者和消费者,对输入流,可不必关心它的源端是什么,只要简单地从流中读取数据,而对输出流,也可不知道它的目的端,只是简单的往流中写数据。二流的三种分类方式 :输入流和输出流 :字节流和字符流 :节点流和处理流三流的层次结构 四缓冲流: 缓冲流要套接在相应的节点流觞,提高了读写的效率。 此处理流的构造方法都得传相对应的基类类型 BufferedReader:提供了readLine方法,用于高效读取一行字符串 BufferedWriter:提供了newLine用于写入一个行分隔符也就是换行 五转换流:主要作用将字节流转换成字符流。 InputStreamReader需要和InputStream套接 OutputStreamWriter需要和OutputStream套接 eg: InputStremReaderinput=newInputStreamReader(newFileInputStream(...));六流的结构: 根接口:InputStream/OutputStream 充当数据源的IO类有FileInputStream/FileOutputStream,ByteArrayInputStream/ByteArrayOutputStream等。 充当装饰功能的IO类BufferedInputStream/BufferedOutputStream,DataInputStream/DataOutputStream等。 它们都是继承装饰接口FilterInputStream/FilterOutputStream. 使用IO时,首先创建一个数据源IO,然后根据需要的功能创建装饰类IO,其构造函数的参数为以创建的数据源IO eg: 我们以创建一个具有缓冲的文件输入流为例,假定需要从磁盘读取文件“C:\”: //创建一个FileInputStream: FileInputStreamfileInput=newFileInputStream(”C:\\”); //创建一个BufferedInputStream: BufferedInputStreambufferedInput=newBufferedInputStream(fileInput); //现在得到的bufferedInput即是具有缓冲的文件输入流或者进一步简写如下: InputStreaminput=newBufferedInputStream(newFileInputStream(”C:\\”)); //现在得到的input即是具有缓冲的文件输入流 。Reader用于读入16位字符,也就是Unicode编码的字符;而InputStream用于读入ASCII字符和二进制数据。在Java中,有不同类型的Reader输入流对应于不同的数据源: FileReader用于从文件输入; CharArrayReader用于从程序中的字符数组输入; StringReader用于从程序中的字符串输入; PipedReader用于读取从另一个线程中的PipedWriter写入管道的数据。相应的也有不同类型的InputStream输入流对应于不同的数据源: FileInputStream,ByteArrayInputStream,StringBufferInputStream,PipedInputStream。另外,还有两种没有对应R
JavaIO流详解 来自淘豆网m.daumloan.com转载请标明出处.