转换流
所谓转换流,就是在字节流和字符流之间的一个桥梁,有了转换流,如果没有指定字符编码,默认编码为GBK.
为了提高效率,可以在中间建立一个缓冲数组,包装到BufferedWriter/BufferedReader中,避免频繁调用切换器
例如:
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter out = new BufferedWriter(new OutputStreaWriter(System.in))
API文档中抓转换流中的构造方法:
InputStreamReader中的构造方法*
InputStreamReader(InputStream in)
//创建一个使用默认字符集的InputStreamReader
InputStreamReader(InputStream in, charset cs)
//创建使用给定字符集的InputStreamReader
InputStreamReader(InputStream in,charsetDecoder dec)
//创建使用给定字符集解码器的InputStreamReader
InputStreamReader(InputStream in, String charsetName)
//创建使用指定字符集的InputStreamReader
方法摘要
void close()
//关闭流并释放
String getEncoding()
//返回流的编码名称
int read()
//读取单个字符
boolean ready()
//判断此流是否已经准备好用去读取
OutputStreamWriter:
语法格式:
Writer out = new BufferedWriter(new OutputStreamWriter(System.in))
构造方法摘要:
OutputStreamWriter(OutputStream out)
//创建默认编码的OutputStreamWriter
OutputStreamWriter(OutputStream ,Charset cs)
//创建使用给定字符集OutputStreamWriter
OutputStreamWriter(OutputStream out, CharsetEncoder enc)
//创建使用给定字符集编码的OutputStreamWrite
OutputStreamWriter(OutputStream out, String charsetName)
//创建使用指定字符集的 OutputStreamWriter。
方法摘要:
void close()
//关闭资源
void flush()
//刷新缓存
String getEncoding()
//返回流中的字符编码
void write(char[] cbuf, int off, int len)
//写入字符数组的某一部分
void write(int c)
// 写入单个字符
void write(String str, int off, int len)
// 写入字符串的某一部分。
下面举个例子来说明转换流的用法:
package Practice;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class ConversionIO {
/**
* 转换流
* @param args
* 所谓转换流,就是将字节流转换为字符流,作为字节流和字符流的转换的桥梁
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//获取便准输入流
InputStream in = System.in;
//将字节流转换为字符流
InputStreamReader inputStreamReader = new InputStreamReader(in);
//缓冲字符流
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
//读取行数内容
String string = null;
while ((string = bufferedReader.readLine()) != null) {
if (条件语句) {
//执行语句
System.out.println("程序测试完毕!");
}
System.out.println("程序测试完毕!");
}
}
}