InputStreamReader和OutputStreamWriter

InputStreamReader和OutputStreamWriter

若想对InputStream和OutputStream进行字符处理,可以使用java.io.InputStreamReader和java.io.OutputStreamWriter为其加上字符处理的功能,它们分别为Reader和Writer的子类。

举个例子来说,若想要显示纯文本文件的内容,不用费心地自行判断字符编码(例如范例14.15中要费心地自行判断是ASCII英文字母或BIG5中文字),只要将InputStream、OutputStream的实例作为构建InputStreamReader、OutputStreamWriter时的变量,就可以操作InputStreamReader和OutputStreamWriter来进行文本文件的读取,让它们为您做字符判断与转换的动作。

范例14.17可以打开一个纯文本文件,显示其中的字符内容。为了示范OutputStreamWriter的功能,范例会将文本文件复制为另一个文本文件"backup_原文件名"。

范例14.17 StreamReaderWriterDemo.java

package onlyfun.caterpillar;

import java.io.*;

public class StreamReaderWriterDemo {
public static void main(String[] args) {
try {
FileInputStream fileInputStream =
new FileInputStream(args[0]);
// 为FileInputStream加上字符处理功能
InputStreamReader inputStreamReader =
new InputStreamReader(fileInputStream);
 FileOutputStream fileOutputStream = 
new FileOutputStream("backup_" + args[0]);
// 为FileOutputStream加上字符处理功能
OutputStreamWriter outputStreamWriter =
new OutputStreamWriter(fileOutputStream);

int ch = 0;
// 以字符方式显示文件内容
while((ch = inputStreamReader.read()) != -1) {
System.out.print((char) ch);
outputStreamWriter.write(ch);
}
System.out.println();
 inputStreamReader.close(); 
outputStreamWriter.close();
}
catch(ArrayIndexOutOfBoundsException e) {
System.out.println("没有指定文件");
}
catch(IOException e) {
e.printStackTrace();
}
}
}
在这里使用FileInputStream、FileOutputStream,但InputStreamReader、 OutputStreamWriter可以分别以任何InputStream、OutputStream子类的实例作为构建对象时的变量。之前提过,InputStreamReader、OutputStreamWriter在存取时是以系统的默认字符编码来进行字符转换,也可以自行指定字符编码。例如指定读取文件时的字符编码为BIG5:

InputStreamReader inputStreamReader =
new InputStreamReader(fileInputStream, "BIG5");


转载自:http://book.51cto.com/art/200812/101131.htm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值