字符流
字符流:
字符输入流(读)
Reader类抽象类
Reader类的常用方法:
int read()
int read(char[] c)
read(char[] c,int off,int len)
void close()
InputStreamReader类可以指定字符编码格式
Reader类的子类InputStreamReader常用的构造方法
new InputStreamReader(InputStream in)
new InputStreamReader(InputStream in,String charSetName)
传入的是字节输入流对象,所以使用前要创建FileInputStream对象
charsetName指定的编码格式
FileReader类不可以指定字符编码格式,按照文件系统默认编码格式去读
InputStreamReader类的子类FileReader的构造方法
new FileReader(File file)
new FileReader(String pathname)
中文乱码
原因:文件编码格式 和 程序环境的编码格式不一致
解决方案: 字符流去读的时候,指定字符流的编码格式
System.out.println(System.getProperty("file.encoding"))(获得本地平台的字符编码类型)
txt文本的编码格式是ANSI(GBK)
缓冲流:
BufferedReader类
Reader类的子类BufferedReader类使用BufferedReader要传入Reader对象,所以使用前要先创建Reader对象
readLine()
字符输出流(写)
Writer类抽象类
Writer类的常用方法
writer(String str)
writer(String str,int off,int len)
void close()
void flush() 清空缓存
OutputStreamWriter类可以指定字符编码格式
Writer类的子类OutputStreamWriter类常用的构造方法
new OutputStreamWriter(OutputStream out)
new OutputStreamWriter(OutputStream out,String charSetName)
charsetName指定的编码格式
FileWriter类不可以指定字符编码格式,会按照文件系统默认编码格式去写
InputStreamWriter类的子类FileWriter的构造方法:以下两种构造,都可以重载,指定一个boolean类型的参数,用来指定追加还是覆盖文件内容
new FileWriter(File file)
new FileWriter(String pathname)
缓冲流:
BufferedWeiter类
Writer类的子类BufferedWriter类常用的构造方法
new BufferedWriter(Writer out)
newLine() 创建新的一行