1.转换流概述
转换流,可以将一个字节流转换为字符流,也可以将一个字符流转换为字节流
OutputStreamWriter:可以将输出的字符流转换为字节流的输出形式
InputStreamReader:将输入的字节流转换为字符流输入形式
2.OutputStreamWriter
public class OutputStreamWriter extends Writer
OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的charset将要写入流中的字符编码成字节。它使用的字符集可以由名称指定或显示给定,否则将接受平台默认的字符集。
3.InputStreamReader
public class InputStreamReader extends Reader
InputStreamReader是字节流通向字符流额桥梁:它使用指定的charset读取字节并将其解码为字符。他使用的字符集可以由名称指定或显示给定,或者可以接受平台默认的字符集。
package com.vince.convertstream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;
/**
* 转换流
* @author lamp
*
*/
public class ConvertStreamDemo {
/**
* 使用转换流,把字节流转换成字符流
*/
public static void reader(){
try {
//构造字节输入流
InputStream in = new FileInputStream("d:\\别让大学上了你.txt");
//通过字节输入流构造一个字符输入流
Reader reader = new InputStreamReader(in);
char[] cs = new char[50];
int len = -1;
StringBuilder sb = new StringBuilder();
while((len=reader.read(cs))!=-1){
sb.append(new String(cs,0,len));
}
//关闭流
reader.close();
in.close();
System.out.println(sb);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 使用转换流,把字符流转换成字节流输出
* OutputStreamWriter
*/
public static void writer(){
try {
//构造一个字节输出流
OutputStream out = new FileOutputStream("d:\\3.txt");
String info = "山不在高,有仙则名;学JAVA,没威哥不行";
//通过字节输出流构造一个字符输出流
Writer writer = new OutputStreamWriter(out);
writer.write(info);//输出
//关闭流
writer.close();
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
// writer();
reader();
}
}