转换流
public class OutputStreamWriterextends WriterOutputStreamWriter是从字符流到字节流的桥梁:
使用指定的charset将写入的字符编码为字节。 它使用的字符集可以由名称指定,也可以被明确指定,或者可以接受平台的默认字符集。
public class InputStreamReader
extends ReaderInputStreamReader是从字节流到字符流的桥梁:它读取字节,并使用指定的charset将其解码为字符。
它使用的字符集可以由名称指定,也可以被明确指定,或者可以接受平台的默认字符集。
------------------------------------------------------------------------------------------------------------------------
OutputStreamWriter构造方法
OutputStreamWriter(OutputStream out) 创建一个使用默认字符编码的OutputStreamWriter。
OutputStreamWriter(OutputStream out, String charsetName) 创建一个使用命名字符集的OutputStreamWriter。
--------------------------------------------------------------------------------------------------------------
InputStreamReader构造方法
InputStreamReader(InputStream in) 创建一个使用默认字符集的InputStreamReader。
InputStreamReader(InputStream in, String charsetName) 创建一个使用命名字符集的InputStreamReader。
package com.io.liushuaishuai; import java.io.*; import java.util.Arrays; /* public class OutputStreamWriterextends WriterOutputStreamWriter是从字符流到字节流的桥梁: 使用指定的charset将写入的字符编码为字节。 它使用的字符集可以由名称指定,也可以被明确指定,或者可以接受平台的默认字符集。 public class InputStreamReader extends ReaderInputStreamReader是从字节流到字符流的桥梁:它读取字节,并使用指定的charset将其解码为字符。 它使用的字符集可以由名称指定,也可以被明确指定,或者可以接受平台的默认字符集。 */ public class convertStreamDemo01 { public static void main(String[] args) throws IOException { /* OutputStreamWriter(OutputStream out) 创建一个使用默认字符编码的OutputStreamWriter。 OutputStreamWriter(OutputStream out, String charsetName) 创建一个使用命名字符集的OutputStreamWriter。 */ // FileOutputStream fos = new FileOutputStream("myIOstream\\fos.txt"); // OutputStreamWriter osw = new OutputStreamWriter(fos ); // OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("myIOstream\\fos.txt")); OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("myIOstream\\fos.txt"),"GBK"); osw.write("中国"); osw.close(); /* InputStreamReader(InputStream in) 创建一个使用默认字符集的InputStreamReader。 InputStreamReader(InputStream in, String charsetName) 创建一个使用命名字符集的InputStreamReader。 */ InputStreamReader isr = new InputStreamReader(new FileInputStream("myIOstream\\fos.txt"),"GBK"); //两种方式 一次读取一个字符数据,一次读取一个字符数组数据 //一次读取一个字符数据 /*int ch; while ((ch = isr.read()) != -1) { System.out.print((char) ch); }*/ //一次读取一个字符数组 char[] chs = new char[1024]; int len; while((len = isr.read(chs)) != -1) { System.out.println(new String(chs,0,len)); // System.out.println(Arrays.toString(chs));//[中, 国, , , ..... ,,] } isr.close(); } }