您的位置:首页 > 编程语言 > Java开发

java中的流

2016-07-22 09:01 288 查看
参考:http://www.cnblogs.com/pepcod/archive/2013/01/20/2913435.html

1、流的概念

流(stream)的概念源于UNIX中管道(pipe)的概念。在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备、外部文件等。

一个流,必有源端和目的端,它们可以是计算机内存的某些区域,也可以是磁盘文件,甚至可以是Internet上的某个URL

流的方向是重要的,根据流的方向,流可分为两类:输入流和输出流。用户可以从输入流中读取信息,但不能写它。相反,对输出流,只能往输入流写,而不能读它。

实际上,流的源端和目的端可简单地看成是字节的生产者和消费者,对输入流,可不必关心它的源端是什么,只要简单地从流中读数据,而对输出流,也可不知道它的目的端,只是简单地往流中写数据。

2、流的分类

(1)结点流和过滤器

结点流:直接从指定位置(如磁盘文件或内存区域)读或写

过滤器:输入流的源一般是以其他输入流,经过过滤或处理后再以新的输入流的形式提供给用户;输出流的目的端一般也是其他的输出流

(2)字节流和字符流

字节流:处理的单位是字节,InputStream是左右字节输入流的祖先,outputstream是所有字节输出流的祖先

字符流:处理的单位是字符(两个字节)Reader是所有读取字符串输入流的祖先,而writer是所有输出字符串的祖先。

除了字符流和字节流之外,还存在一组字节流-字符流的转换类。

OutputStreamWriter:是Writer的子类,将字节输入流转化为字符输入流

InputStreamReader:是Reader的子类,将字节输出流转化为字符输出流

3、JAVA字节流

(1)FileInputStream和FileOutputStream

这两个类属于结点流,第一个类的源端和第二个类的目的端都是磁盘文件,它们的构造方法允许通过文件的路径名来构造相应的流。如:

FileInputStream infile = new FileInputStream(“myfile.dat”);

FileOutputStream outfile = new FileOutputStream(“results.dat”);

要注意的是,构造FileInputStream, 对应的文件必须存在并且是可读的,而构造FileOutputStream时,如输出文件已存在,则必须是可覆盖的。

(2)BufferInputStream和BufferOutputStream

它们是过滤器流,其作用是提高输入输出的效率。

(3)DataInputStream和DataOutputStream

4、JAVA字符流

字符流主要是用来处理字符的。Java采用16位的Unicode来表示字符串和字符,对应的字符流按输入和输出分别称为readers和writers。

(1)InputStreamReader和OutputStreamWriter

在构造这两个类对应的流时,它们会自动进行转换,将平台缺省的编码集编码的字节转换为Unicode字符。对英语环境,其缺省的编码集一般为ISO8859-1。

(2)BufferedReader和BufferedWriter

这两个类对应的流使用了缓冲,能大大提高输入输出的效率。这两个也是过滤器流,常用来对InputStreamReader和OutputStreamWriter进行处理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 通信