字符流抽象基类:
Reader:字符输入流的抽象类
Writer: 字符输出流的抽象类
字符流中和编码解码问题相关的两个类:
InputStreamReader
OutputStreamWriter
程序查看
package ma.Demo38;
import java.io.*;
/*
构造方法:
OutputStreamWriter(OutputStream out) 创建一个使用默认字符编码的OutputStreamWriter。
OutputStreamWriter(OutputStream out, String charsetName) 创建一个使用命名字符集的OutputStreamWriter。
InputStreamReader(InputStream in) 创建一个使用默认字符集的InputStreamReader。
InputStreamReader(InputStream in, String charsetName) 创建一个使用命名字符集的InputStreamReader。
*/
public class CharacterStreamDemo {
public static void main(String[] args) throws IOException {
// OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("javaSE_code\\osw.txt"));
// OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("javaSE_code\\osw.txt"),"UTF-8");
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("javaSE_code\\osw.txt"),"GBK");
osw.write("吃鱼");
//释放资源
osw.close();
InputStreamReader isr = new InputStreamReader(new FileInputStream("javaSE_code\\osw.txt"),"GBK");
//一次读取一个字符数据
int ch;
while ((ch = isr.read()) != -1){
System.out.print((char)ch);
}
//释放资源
isr.close();
}
}
1、UTF-8编码格式
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("javaSE_code\\osw.txt"));//使用 IDEA 默认编码格式(UTF-8) OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("javaSE_code\\osw.txt"),"UTF-8");//使用 UTF-8 编码格式
使用 UTF-8 编码格式输出的文件可在 IDEA 的文件中正常看到内容,不会产生乱码
2、GBK编码格式
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("javaSE_code\\osw.txt"),"GBK");//使用 GBK 编码格式
使用 GBK 编码格式输出的文件在 IDEA 中查看内容,会产生乱码,可以用字符输入流解码在 IDEA 程序中查看内容
InputStreamReader isr = new InputStreamReader(new FileInputStream("javaSE_code\\osw.txt"),"GBK"); int ch; while ((ch = isr.read()) != -1){ System.out.print((char)ch); }
且在程序文件中依旧是乱码