java字节流转换字符_JAVA-IO操作,字节-字符转换流

掌握OutputStreamWriter和InputStreamReader类的作用

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

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

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

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

d0f07c3b8d2514726a57abf45c86519c.png

OutputStreamWriter类的构造方法

OutputStreamWriter(OutputStreamout)

创建使用默认字符编码的 OutputStreamWriter。

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

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

package类集;import java.io.*;public classOutputStreamWriterDemo01{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 classInputStreamReaderDemo01{public static void main(String args[]) throwsException{

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两个子类的定义,中间使用了转换类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值