【Java学习笔记】25:转换流(从字节流到字符流的转换)

时间:2023-01-11 17:59:03

转换流是一种adapter(适配器:将一个类的接口变换成客户端所期待的一种接口)。当得到的数据是字节流的,但使用时需要用字符流,这种时候就要采用转换流做转换了。

[1]InputStreamReader从字节输入流到字符输入流

package t1;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Test
{

public static void main(String[] args)
{
test1();
}

private static void test1() {
boolean flag=true;
System.out.println("请输入一句话,输入bye程序结束:");
while(flag)
{
BufferedReader br=
new BufferedReader
(new InputStreamReader(System.in));//通过InputStreamReader转换
String str=null;
try {
str = br.readLine();
} catch (IOException e) {
e.printStackTrace();
}
if(!str.equals("bye"))
System.out.println(str);
else
flag=false;
}
}
}

运行结果:
【Java学习笔记】25:转换流(从字节流到字符流的转换)

[2]OutputStreamWriter从字节输出流到字符输出流

package t1;

import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;

public class Test
{
public static void main(String[] args)
{
test2();
}

private static void test2() {
BufferedWriter out=null;
try {
out=new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream("C:\\Users\\Shinelon\\Desktop\\sb.txt")));
out.write("AROLF");
//out.flush();//清空缓冲区
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

【Java学习笔记】25:转换流(从字节流到字符流的转换)
可以看到先创建了FileOutputStream(文件字节输出流)的实例,然后用OutputStreamWriter(从字节输出流到字符输出流)类的转换构造函数建立中间实例,再传给BufferedWriter(缓冲字符输出流)实现了转换。