【JAVA IO】_字节-字符转换流笔记

来源:互联网 发布:手机淘宝秒杀怎么刷新 编辑:程序博客网 时间:2024/05/17 09:21

【JAVA IO】_字节-字符转换流笔记

分类: Java
【JAVA IO】_字节-字符转换流笔记

本章目标:
掌握OutputStreamWriter和InputStreamReader类的作用

OutputStreamWriter和IntputStreamReader

正式因为有OutputStreamWriter和InputStreamReader才使InputStream、OutputStream与Reader、Writer建立关系。
所以本章要比上一章更重要。

在整个IO包中,实际上就是字节流和字符流,但是除了这两个流之外,还存在了一组字节流-字符流的转换类。

OutputStreamWriter:是Writer的子类,将输出的字符流变为字节流,即:将一个字符流的输出对象变为字节流的输出对象。

InputStreamReader: 是Reader的子类,将输入的字节流变为字符流,即:将一个字节流的输入对象变为字符流的输入对象。

一般在操作输入输出内容的时候就需要使用字节或字符流,但是有些时候需要将字符流变为字节流的形式,或者将字节变为字符流的形式,所以,就需要另外一组转换流的操作类。

转换步骤:
如果以文件操作为例,则在内存中的字符数据需要通过OutputStreamWriter变为字节流才能保存在文件之中,读取的时候需要将读入的字节流通过InputStreamReader变为字符流。

在OutputStreamWriter类中需要一个字节流的对象:
public OutputStreamWriter(OutputStream out)
例如:将字节的文件输出流,以字符的形式输出。

[java] view plaincopyprint?
  1. import java.io.*;  
  2. public class OutputStreamWriterdemo01{  
  3.     public static void main(String args[])throws Exception{  
  4.         File f = new File("d:"+File.separator+"test.txt");  
  5.         Writer out = null;  
  6.         out = new OutputStreamWriter(new FileOutputStream(f));  
  7.         out.write("hello world!!!");  
  8.         out.close();  
  9.     }  
  10. }  



读的时候,也可以使用字符流的形式读取字节流的文件。

[java] view plaincopyprint?
  1. import java.io.*;  
  2. public class InputStreamReaderDemo01{  
  3.     public static void main(String args[])throws Exception{  
  4.         File f = new File("d:"+File.separator+"test.txt");  
  5.         Reader reader = null;  
  6.         reader = new InputStreamReader(new FileInputStream(f));  
  7.         char c[] = new char[1024];  
  8.         int len = reader.read(c);  
  9.         System.out.println(new String(c,0,len));  
  10.     }  
  11. }  



但是,以上只是以文件操作为例,因为OutputStreamWriter 中接收的类型是OutputStream,只要是字节输出流都可以使用字符的形式操作,而InputStreamReader()中接收的类型是InputStream,只要是字节的输入流都可以使用字符的输入流操作。

字节流字符流的类关系整理:
java.lang.Object
    java.io.Writer
        java.io.OutputStreamWriter
            java.io.FileWriter

java.lang.Object
    java.io.Reader
        java.io.InputStreamReader
            java.io.FileReader
0 0
原创粉丝点击