原理图:
注意:
FileReader
1.其实所有的底层都是FileInputStream来读的,先读取到字节 再FileReader(这个时候用的UTF-8来解码的来read的)把字节转换为字符(相当于解码)
但是如果存储的是GBK格式,则FileInputStream读取的字节时Gbk格式 但是FileReader仍然用UTF-8来,则会产生乱码(编码和解码不对应,会乱码所以FileReader只能读取ide默认格式编码的文件)
不用FileReader读了用InputStreamReader来读既可以查询默认的UTF-8又可以查询指定的码表比如GBK或者其他的
2.FileWriter
只能查询Ide的默认码表,吧字符转换为字节(编码把看懂的转换成看不懂的)还是会用到FileOutputStream依次把字节写入到硬盘中(只能写Utf-8)
如果要写GBK格式的文件
用OutputStreamWriter 既可以把字符转化为默认的又可以转化为指定的码表 ,然后FileOutputStream写入到硬盘中(注意FileOutputStream只能写UTF-8)
OutputStreamwriter介绍和代码实现
继承来自父类的共性成员方法
void writer(int c)写入单个字符
void writer(char[] cbuf)写入字符数组
abstract void writer(char[] cbuf,int off,int len)写入字符数组的一部分,off数组的开始索引,len写的字符个数
void writer(String str)写入字符串
void writer(String str,int off,int len)写入字符串的某一部分,off数组的开始索引,len写的字符的个数
void flush()刷新该流的缓存
void cloes()关闭次流,但先要刷新它
构造方法:
OutputStreamWriter(OutputStream out)创建使用默认字符编码的 OutputStreamWriter
OutputStreamWriter(OutputStream out,String charsetName)创建使用指定字符集的OutputStreamWriter
参数:
OutputStreamWriter out: 字节输出流,可以用来写转换之后的字节到文件中
String charsetName:指定的编码表名称,不区分大小写,可以是utf-8/UTF-8,gbk/GBK,...不指定默认使用UTF-8
使用步骤:
1.创建OutputStreamWriter对象,构造方法中传递字节输出流和指定的编码表名称
2.使用OutputStreamWriter对象中的方法write,把字符转化为字节存储缓冲区中(编码)
3.使用OutputStreaamWriter对象中的方法flush,把内存缓冲区中的字节刷新到文件中(使用字节流写字节的过程)
4.释放资源
代码实现
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)