黑马程序员——I/O流的常用基类

来源:互联网 发布:淘宝开店本人营业执照 编辑:程序博客网 时间:2024/05/14 17:37

I/o的四个基类:

字节流常用抽象基类:InputStream,OutputStream

字符流常用抽象基类:Reader,Writer

对于InputStream/Reader而言,他们把输入设备抽象成一个“水管”,这个“水管”里的每一个“水滴”就是一个输入流。

输入流使用隐式的记录指针来表示当前正准备从哪个“水滴”开始读取,每当程序从InputStream或Reader里读取一个或者多个“水滴”后,记录指针自动向后移动

对于OutputStream/Writer而言,他们同样把输入输出设备抽象成“水管”,只是这个水管里面没有任何水滴。当执行输出时,程序相当于一次把”水滴“放入到水管中,输出流采用隐式指针来标识当前水滴即将放入的位置,每当程序向OutputStream/Writer里输出一个或者多个水滴之后,记录将自动向后移动。

 

I/o流的所有类都是由这四个基类派生出来的由这四个类派生出来的子类名称都是以其父类名作为子类的后缀。

如:InputStream的子类FileInputStream

       Reader的子类FileReader

 

字节流和字符流的对比:

       字节流由字节组成,主要处理二进制数据,它是按字节来处理的流。

       我们日常处理的很多数据,都是文本,所以在字节流之外,又提出了字符流的概念,直接按照Java虚拟机的encode来处理,也就是在输出流和输入流之间 进行字符集的转换

       字节流可以处理任何对象而字符流只能处理字符,字符串等。但是在处理字符对象时字符流更加方便。

 

I/o的四个基类都是抽象的所以在不能直接使用基类创建对象,需要使用这四个基类的子类来创建对象。

比如想要将一个文本的Test13的内容写入b.txt。就要借助字符流基类Reader的子类FileReader和Writer的子类FileWriter

代码事例:

 

通过Reader的子类和writer将Test13.java的内容copy到了b.txt中

 

 

0 0