转换流:
什么是转换流?
转换流,可以实现字节数据到字符数据的转换。常用的有:inputstreamReader和OutStreamWriter
怎么使用转换流?
和之前的处理流一样,都是套装在现有字节流之上。实现相应的功能!
字节流和处理流如何配合?
基本的思想就是,原来的流不能够很好的处理数据,按照需求,套接相应的处理流,完成需求;
就有可能出现不断地套接套接再套接。
就有可能出现不断地套接套接再套接。
····下图详解inputstreamReader和OutStreamWriter,后面有实现。
试验一
:转换流----输入:将字节流输入,变为字符型输入
import java.io.*;
public class TestTransport {
public static void main(String[] args) throws Exception {
// 1:
OutputStreamWriter r = new OutputStreamWriter ((new FileOutputStream("D:/0000/iloveyou.txt")));
r.write("晚上好");
// 该类型流,也需要flush
r.flush();
r.close();
// 2:
r = new OutputStreamWriter(
new FileOutputStream("D:/0000/iloveyou.txt", true),
"ISO8859_1");
r.write("mircosoftibmsunapplehp");
r.flush();
}
}
1:用转换流。将字符串输出到文件中去。(因为之前的outputstream不支持字符串输出)
2:同上,只不过在文件原来的内容上,加入要输出的内容,而不是清空原来的内容再输入。
写法:
其实很简单,就是在原来的字节流基础上,套接转换流,对转换流进行相应的操作。
实验二
:一个很典型的处理流和字节流的配合、
基本的思想就是,原来的流不能够很好的处理数据,按照需求,套接相应的处理流,完成需求;
就有可能出现不断地套接套接再套接。
import java.io.*;
public class TestTaojie {
public static void main(String[] agrs) throws Exception{
// System.in的套接InputStreamReader,完成字节向字符的转换。
// 再有BufferedReader的套接,完成读一行的工作
InputStreamReader r = new InputStreamReader(System.in);
BufferedReader rr= new BufferedReader(r);
String s = null;
s = rr.readLine();
System.out.println(s.toUpperCase());
}
}
图解:
该程序实现的是,从命令行读入数据(System.in),但是该数据是字节流型的,而命令行输入的是字符型的,所以需要转换。经过InputStreamReader的处理,再接着,想实现按行读入数据,现有的InputStreamReader显然已经不能满足要求,所以,再次套接BufferedReader实现按行输入数据的操作。