package transformation;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
/**
* @author 45~
* @version 1.0
* 看中文乱码问题
*/
public class CodeQuestion {
public static void main(String[] args) throws IOException {
//读取e:\\a.txt文件到程序,因为是文本文件所以用字符流比较合适
/*1、创建字符输入流 BufferedReader来进行读取,同时BufferedReader也是一个处理流,
处理流里边可以放入一个节点流fileReader跟一个具体的数据源关联,使用BufferedReader对象读取a.txt。
学流最关键的是要知道什么时候用什么流。
*/
//默认情况下读取文件是按照utf-8编码不出错,本例转为ANSI国标码(根据当前安装的系统来确定的,这里是GBK)
//出现乱码的根本原因是没有指定读取文件的编码方式
String filePath = "e:\\a11.txt";
BufferedReader br = new BufferedReader(new FileReader(filePath));
String s = br.readLine();
System.out.println("读取到的内容"+s);
br.close();
}
}
package transformation;
import java.io.*;
/**
* @author 45~
* @version 1.0
* 使用InputStreamReader转换流解决中文乱码问题
* 将字节流 转换成 字符流
* FileInputStream(低级流,底层直接操作数据源) 转成 InputStreamReader,
* 指定编码UTF-8/GBK
*/
public class InputStreamReader_ {
public static void main(String[] args) throws IOException {
String filePath = "e:\\a11.txt";
//1、将new FileInputStream(filePath)转成了 InputStreamReader
//InputStreamReader isr = new InputStreamReader(new FileInputStream(filePath), "gbk");
//2、把 InputStreamReader 传入 BufferedReader,将转换流放入到包装流即处理流里边。
//BufferedReader br = new BufferedReader(isr);
BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream(filePath), "gbk"));
//3、读取
String s = br.readLine();
System.out.println("读取内容="+s);
//4、关闭外层流
br.close();
}
}
package transformation;
import java.io.*;
/**
* @author 45~
* @version 1.0
* 演示OutputStreamWriter的使用
* 把字节流FileOutputStream 转成字符流OutputStreamWriter
* 指定编码为gbk/utf8/utf-8
*/
public class OutputStreamWriter_ {
public static void main(String[] args) throws IOException {
String filePath = "e:\\hsp.txt";
String charSet = "utf8";
//用到OutputStreamWriter转换流,给它传入了一个文件类型的字节流new FileOutputStream(filePath)
//FileOutputStream是专门处理文件的字节输出流,节点流
//通过转换流OutputStreamWriter,将字节流转换成字符流
OutputStreamWriter osw = new OutputStreamWriter(
new FileOutputStream(filePath), charSet);
osw.write("hi,今天你好");
osw.close();
System.out.println("按照"+charSet+"保存文件成功~");
}
}