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

JAVA-IO操作,字节-字符转换流

2017-04-28 00:02 706 查看

掌握OutputStreamWriter和InputStreamReader类的作用

一般操作输入输出内容的时候,就需要使用字节或字符流,但是,有些时候,需要将字符流变成字节流形式,或者字节流变成字符流形式。

所以,就需要另一种转换流的操作类。

OutputStreamWriter:是Writer的子类。将输出的字符流变成字节流:即将字符流的输入对象变成字节流输入对象。

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



OutputStreamWriter类的构造方法

OutputStreamWriter(OutputStream out)
创建使用默认字符编码的 OutputStreamWriter。


从构造方法可以看出,在outputStreamWriter类中需要一个字节流对象。

例如:将字节的文件输出流,以字符的形式输出。

package 类集;
import java.io.* ;
public class OutputStreamWriterDemo01{
public static void main(String args[]) throws Exception    {    // 所有异常抛出
File f = new File("d:" + File.separator + "test.txt") ;
 Writer out = null ;    // 字符输出流
out = new OutputStreamWriter(new FileOutputStream(f)) ;    // 字节流变为字符流,同时向上转型。
out.write("hello world!!") ;    // 使用字符流输出
out.close() ;
}
};


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

package 类集;
import java.io.* ;
public class InputStreamReaderDemo01{
public static void main(String args[]) throws Exception{
File f = new File("d:" + File.separator + "test.txt") ;
Reader reader = null ;
reader = new InputStreamReader(new FileInputStream(f)) ;    // 将字节流变为字符流
char c[] = new char[1024] ;
int len = reader.read(c) ;    // 读取
reader.close() ;    // 关闭
System.out.println(new String(c,0,len)) ;
}
};


输出结果:

hello world!!


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

而InputStreamReader中接收的类型是InputStream。只要是字节输入流,都可以使用字符的输入流操作

FileWriter和FileReader类的说明

java.io
类 FileWriter
java.lang.Object
继承者 java.io.Writer
继承者 java.io.OutputStreamWriter
继承者 java.io.FileWriter


FilWriter不是Writer的子类,而是转换流的子类。

java.io
类 FileReader
java.lang.Object
继承者 java.io.Reader
继承者 java.io.InputStreamReader
继承者 java.io.FileReader


FileReader也不是Reader的子类,而是转换流的子类。

也就是说,不管如何,虽然是以字符的输出流形式,操作字节流输出流,但是实际上还是以字节的形式输出。

而字符的输入流虽然是以字符的形式操作,但是还是使用了字节流,也就是说,在传输或者从文件读取数据的时候,文件里真正保存的数据永远是字节。 

总结

1,一定要掌握两个转换类的作用

2,一定要明白的终端点实际上是以字节的形式进行的。

3,FileWriter和FileReader两个子类的定义,中间使用了转换类。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: