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进行处理。
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对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树