使用字节流的问题:
由于一个中文字符在UTF-8编码中占用三个字节,在GBK编码中占用两个字节,按照字节进行读取时,会将他们拆开进行读取,出现乱码情况。
java.io.Reader 字符输入流
是字符输入流最顶层的父类,定义了一些共性的成员方法,是一个抽象类
FileReader
读取单个字符
读取多个字符
java.io.Writer 字符输出流
使用步骤
package FileInputStreamTest;
import java.io.FileWriter;
import java.io.IOException;
public class FileWriterMain {
public static void main(String[] args) throws IOException {
FileWriter fw = new FileWriter("C:\\Users\\hpuzjh\\Desktop\\d.txt");
fw.write('张');
fw.write(97);
fw.flush();
fw.close();
}
}
将'张'、'a'两个字符写进文件中
flush和close方法的区别
字符输出流写数据的其他方法
续写和换行
package FileInputStreamTest;
import java.io.FileWriter;
import java.io.IOException;
public class FileWriterMain {
public static void main(String[] args) throws IOException {
FileWriter fw = new FileWriter("C:\\Users\\hpuzjh\\Desktop\\d.txt",true);
for (int i = 0; i < 5; i++) {
fw.write("航"+i+"\r\n");
}
fw.close();
}
}
使用try……catch处理流中的异常
JDK7和JDK9中的特性处理方法