JavaIO系列——常见字符编码,字符流抽象类,FileReader,FileWriter
字符编码
- ISO-8859-1:收录除ASCII外,还包括西欧、希腊语、泰语、阿拉伯语、希伯来语对应的文字符号。
- UTF-8:针对Unicode码表的可变长度字符编码
- GB2312:简体中文
- GBK:简体中文、扩充
- BIG5:繁体中文
linux系统:utf-8
windows:gbk
mac:utf-8
注意
当解码和编码方式不同会出现乱码!
我们更推荐普及使用utf-8编码
字符流抽象类
- Reader:字符输入流
- Writer:字符输出流
Reader
用于读取字符流的抽象类。 唯一的方法 子类必须实现的是 read(char[], int, int) 和 close()。 最多 但是,子类将按顺序覆盖此处定义的一些方法 提供更高的效率、附加功能或两者兼而有之。
构造方法
方法
Writer
用于写入字符流的抽象类。 唯一的方法 子类必须实现的是 write(char[], int, int)、flush() 和 close()。 然而,大多数子类将覆盖此处定义的一些方法 以提供更高的效率、附加功能或两者兼而有之。
构造方法
方法
FileReader
使用默认缓冲区大小从字符文件中读取文本。 从字节解码 to characters 使用指定的 字符集 或平台的 默认字符集 。
这 FileReader用于读取字符流。 用于阅读 原始字节流,考虑使用 FileInputStream.
构造
方法
示例
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class demo9 {
public static void main(String[] args) throws IOException {
String path = "C:\\Users\\Syf200208161018\\Desktop\\新建文本文档.txt";
FileReader fileReader = new FileReader(path);
int count = 0;
char[] strings = new char[1024];
while ((count = fileReader.read(strings))!=-1){
System.out.println(new String(strings,0,count));
}
fileReader.close();
}
}
FileWriter
使用默认缓冲区大小将文本写入字符文件。 从字符编码 to bytes 使用指定的 字符集 或平台的 默认字符集 。
文件是否可用或是否可以创建取决于 底层平台。 特别是某些平台,允许文件 只有一个人开放写作 FileWriter(或其他文件写入 对象)一次。 在这种情况下,此类中的构造函数 如果涉及的文件已经打开,则会失败。
这 FileWriter用于编写字符流。 写作用 原始字节流,考虑使用 FileOutputStream.
构造
方法
示例
import java.io.FileWriter;
import java.io.IOException;
public class demo10 {
public static void main(String[] args) throws IOException {
String path = "C:\\Users\\Syf200208161018\\Desktop\\neww.txt";
FileWriter fileWriter = new FileWriter(path);
fileWriter.write("安徽师大海底隧道");
fileWriter.flush();
fileWriter.close();
}
}