package cn.dali3.code23;
import java.io.*;
/*转换流
* 在IDEA中,默认的编码表是UTF-8,一个中文占用3个字节
* Windows中,默认编码表是GBK,一个中文占用两个字节
* 所以,用IDEA进行文件的读写中文的时候,容易产生乱码,这是因为编码表的不同
*
* 转换流:在使用转换流的时候,我们可以使用自己指定的编码表
* 类:OutputStreamWriter 方法继承了父类Writer
* OutputStreamWriter是字符流通向字节流的桥梁:可使用指定的编码表将要写入流中的字符编码成字节。(编码)
* 子类:FileWriter(该类构造方法就是调用的OutputStreamWriter的构造方法)
* 父类:Writer
*
* 构造方法:
* OutputStreamWriter(OutputStream)
* OutputStreamWriter(OutputStream,String charsetName) charsetName为指定编码表
*
*
* 类:InputStreamReader 方法继承父类Reader
* InputStreamReader 是字节流通向字符流的桥梁,可以用指定的编码解码成字符 (解码)
* 子类:FileReader(该类构造方法就是调用的InputStreamReader的构造方法)
* 父类: Reader
*
* 构造方法:
* InputStreamReader(InputStream)
* InputStreamReader(InputStream,String charsetName)
* */
public class Demo01 {
public static void main(String[] args) {
try(OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("C:\\Users\\Administrator\\Desktop\\111.TXT"),"GBK");)
{
osw.write("周杰伦");
osw.write("\r\n");
osw.write("山下美月");
osw.flush();
} catch (UnsupportedEncodingException e) {
System.out.println(e);
} catch (FileNotFoundException e) {
System.out.println(e);
} catch (IOException e) {
System.out.println(e);
}
int len = 0;
try(InputStreamReader isr = new InputStreamReader(new FileInputStream("C:\\Users\\Administrator\\Desktop\\111.TXT"),"GBK")) {
while((len = isr.read())!=-1){
System.out.print((char)len);
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
转换流使用
最新推荐文章于 2024-04-15 00:16:27 发布