(一)InputStreamReader常用构造方法
1)InputStreamReader(InputStream in, String charsetName)
创建使用指定字符集的 InputStreamReader。
in - InputStream
charsetName - 受支持的 charset 的名称
2)InputStreamReader(InputStream in)
创建一个使用默认字符集的 InputStreamReader。
in - InputStream
注:
常用的构造方法是这两个,他们连个都要传入InputStream类,此处划重点(括弧笑)
两者的区别在于一个是使用默认的字符集,一个是使用指定的字符集。
> import java.io.FileInputStream; import java.io.IOException; import
> java.io.InputStreamReader;
>
> public class InputStreamReader_lianxi {
> public static void main(String[] args) throws IOException {
> show1();
> }
> //转换流,读文件
> private static void show1() throws IOException {
> InputStreamReader isr = new InputStreamReader(new FileInputStream("UTF_8文件"),"UTF-8");
> int line =0;
> while((line = isr.read())!=-1){
> System.out.println((char) line);
> }
> } }
结果
注意:使用字节流的方式。
(二)OutputStreamWirter 常用构造方法
1)OutputStreamWriter(OutputStream out)
创建使用默认字符编码的 OutputStreamWriter。
out - OutputStream
2)OutputStreamWriter(OutputStream out, String charsetName)
创建使用指定字符集的 OutputStreamWriter。
out - OutputStream
charsetName - 受支持 charset 的名称
注:
两个构造方法传入的都是OutputStream 类,两者不同之处与InputStreamReader 相同。
一个构造方法默认字符集,一个构造方法自己选定字符集。
代码:
import java.io.*;
public class OutputStreamWirter_lianxi {
public static void main(String[] args) throws IOException {
// show1();
show2();
}
//转换流,可以指定编码格式 GBK
private static void show2() throws IOException {
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("GbK文件"),"gbk");
osw.write("你好");
osw.close();
}
//转换流,可以指定编码格式 utf-8
private static void show1() throws IOException {
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("UTF_8文件"),"utf-8");
osw.write("你好");
osw.flush();
osw.close();
}
}
结果
总结
两个类,主要是为了解决编码集不同的问题,可以用他们进行转换。
关键是记住,构造方法传入的是什么类型的参数。
再就是文件的读取以及写入都是按照字节流的方式进行。