您的位置:首页 > 职场人生

黑马程序员_java IO流

2013-03-23 22:28 246 查看
黑马程序员_java IO流

[align=center]------android培训java培训、期待与您交流!------[/align]
一:什么是流

答:流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。
二:IO流的分类

根据处理数据类型的不同分为:字符流和字节流

根据数据流向不同分为:输入流和输出流。

1.字符流和字节流:
字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象。本质其实就是基于字节流读取时,去查了指定的码表。
字节流和字符流的区别:

读写单位不同:字节流以字节(byte)为单位,字符流以字符为单位,根据码表映射字符,一次能读多个字节。

处理对象不同:字节流能处理所有类型的数据(如图片、avi等),而字符流只能处理字符类型的数据。

结论:只要是处理纯文本数据,就优先考虑使用字符流。 除此之外都使用字节流。
2.输入流和输出流(四大输入流输出流抽象类,IO中所有用于读写操作的IO类均继承了这四大抽象类)
(1).Reader//字符输入流 (Reader
是所有的输入字符流的父类,它是一个抽象类)
(2).Writer//字符输出流 (Writer 是所有的输出字符流的父类,它是一个抽象类)
(3).InputStream//字节输入流 (InputStream 是所有的输入字节流的父类,它是一个抽象类)
(4).OutputStream//字节输出流 (OutputStream 是所有的输出字节流的父类,它是一个抽象类)
值得注意的是:给了使IO中的这些类,更加容易记忆java统一了命名规范,IO操作类的类名前面表明了操作功能,后面表明了流方向
如:FileInputStream这个IO操作类,File说明它是用来操作文件的,InputStream代表此类属于字节输入流



三:字符流与字节流转换

转换流的特点:

其是字符流和字节流之间的桥梁

可对读取到的字节数据经过指定编码转换成字符

可对读取到的字符数据经过指定编码转换成字节

何时使用转换流?

当字节和字符之间有转换动作时;

流操作的数据需要编码或解码时。

具体的对象体现:

InputStreamReader:字节到字符的桥梁

OutputStreamWriter:字符到字节的桥梁

这两个流对象是字符体系中的成员,它们有转换作用,本身又是字符流,所以在构造的时候需要传入字节流对象进来。
案例1(字节流转字符流)
import java.io.*;
public class Test{
public static void main(String[] args)throws Exception{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
//System.in这个对象是一个字节输入流,为了方便操作字符,特将它转为字符输入流
InputStreamReader isr=new InputStreamReader(new FileInputStream("in.txt"),"UTF-8");
//通过转化流可以按照自定义编码格式读取字符
}
}


案例2(字符流转为字节流)
import java.io.*;
public class Test{
public static void main(String[] args)throws Exception{
OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("out.txt"),"UTF-8");
//通过转换流,可以按照自定义编码格式写出字符。
}
}


总结:
操作IO类,其实很简单,操作之前考虑几件事情就好了
1.操作什么类型的数据?除了字符用字符流外,其他数据类型全用字节流操作
2.做什么操作,是读取还是写出?读取用输入流,写出用输出流
3.看操作的设备?主要分为源和目的。
常用的源设备有(1).硬盘 (2).内存 (3).键盘
常用的目的设备(4).硬盘 (5).内存。
针对上面的情况分别可以使用的类
(1)FileInputStream
(2)ByteArrayInputStream
(3)System.in
(4)FileOutputStream
(5)ByteOutputStream
邮箱:wolaoben7252@qq.com
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: