当前位置: 首页 > news >正文

JAVA:io字符流FileReader和FileWriter基础

因为字节流和字符流有很多重复的地方,所以这回干脆直接把字符流的输入和输出直接一起说了。字符流的核心优点是以字符为基本操作单位,能自动处理不同编码的字符转换,避免直接操作字节可能导致的乱码问题。

字符流内置编码和解码机制,可直接处理 Unicode、UTF-8、GBK 等多种字符编码,无需手动处理字节与字符的映射关系。

一、FileReader

还是先从创建FileReader对象开始,注意提前将文件的编码格式和编译器的编码格式统一。是UTF-8两个就都得是UTF-8,是GBK两个就都得是GBK。(在d盘中创建一个名为Test98.txt的文件,提前在文件中写好内容,我写的内容是“字符型Reader”):

String FilePath = "d:\\Test98.txt";
FileReader fileReader = new FileReader(FilePath);

1.输入单个字符:

int c = 0;
while((c=fileReader.read())!=-1) {System.out.print((char)c);
}

创建一个int类型的c来接收read()的返回值,循环输出c并转为char类型。

2.输入char类型字符串当中:

char[] c = new char[4];
int readLen = 0;
while((readLen = fileReader.read())!=-1) {System.out.println(new String(c,0,readLen));
}

创建一个char类型数组c来接受文件中的字符,readLen来接收返回的读取长度。可以用String提供的构造方法先后传入数组,初始索引和偏移量来打印,或者用其他方法来输出。

最后不要忘了fileReader.close();来关闭流,释放资源。

二、FileWriter

创建一个FileWriter类对象,如果没有创建输出文件,系统会自动创建。需要注意的是在FileWriter的构造方法中还需要填入一个boolean类型的变量,这个地方决定输出方式为覆盖还是追加,true为追加,false为覆盖且默认为覆盖。

//创建FileWriter对象
String FilePath = "d:\\Test98.txt";
FileWriter fileWriter = new FileWriter(FilePath);

1.输出一个字符:

char ch = '爽';
fileWriter.write(ch);

这里write方法需要传入的是int类型的参数,传入char类型字符会自动进行类型转换。

2.传入char类型数组:

在write传入char类型数组的方法中有两种重载,一种是直接传入数组,另一种在传入数组后还需传入初始索引和偏移量。推荐使用第二种方法,可以在拷贝文件时精确传输内容。

char[] charArray = {'我','爱','你'};
fileWriter.write(charArray,0,charArray.length);

3.传入String类型字符串:

传入String类型数组的方法中同样有两种重载...

String str = "中国China";
fileWriter.write(str,0,str.length());

4.注意!!!

在输出时一定要记得最后使用flush()方法刷新或close()方法关闭流,否则内容不会输出进文件的。

 


文章转载自:

http://9KeJ7DPJ.nhgkm.cn
http://tTBJopbD.nhgkm.cn
http://kf53gn6C.nhgkm.cn
http://nSwy2qDU.nhgkm.cn
http://9Oq3zJ0F.nhgkm.cn
http://46nxwJr3.nhgkm.cn
http://6askwMRd.nhgkm.cn
http://MQCCWQC0.nhgkm.cn
http://5cr9Bnar.nhgkm.cn
http://qK247Aeq.nhgkm.cn
http://vD75r48i.nhgkm.cn
http://QXiz3Aa5.nhgkm.cn
http://poTp0lVv.nhgkm.cn
http://uVtXeoxv.nhgkm.cn
http://XwhQnc1p.nhgkm.cn
http://PMZNriHB.nhgkm.cn
http://UnP0tewR.nhgkm.cn
http://sPbFZvsz.nhgkm.cn
http://SRPThd7u.nhgkm.cn
http://uOFYNX7i.nhgkm.cn
http://C8Yt8eQP.nhgkm.cn
http://fxTL7mK5.nhgkm.cn
http://PSlOARnQ.nhgkm.cn
http://x6sQYrdZ.nhgkm.cn
http://98CtdYNO.nhgkm.cn
http://JiUUCZTi.nhgkm.cn
http://1igsmxWY.nhgkm.cn
http://QvJiyofj.nhgkm.cn
http://3ZR7GeBV.nhgkm.cn
http://TPQGLl9N.nhgkm.cn
http://www.dtcms.com/a/374327.html

相关文章:

  • 从零深入理解嵌入式OTA升级:Bootloader、IAP与升级流程全解析
  • 7.0 热电偶的工作原理
  • GPT(Generative Pre-trained Transformer)模型架构与损失函数介绍
  • 【51单片机】【protues仿真】基于51单片机公交报站系统
  • linux常用命令(2)——系统管理
  • Yarn介绍与HA搭建
  • 记个笔记:Cocos打包安卓使用安卓通信模块
  • 基于Python的云原生TodoList Demo 项目,验证云原生核心特性
  • 2025年- H121-Lc28. 找出字符串中第一个匹配项的下标(数组)--Java版
  • 【底层机制】auto 关键字的底层实现机制
  • 【代码随想录算法训练营——Day6(Day5周日休息)】哈希表——242.有效的字母异位词、349.两个数组的交集、202.快乐数、1.两数之和
  • leedcode 算法刷题第二八天
  • KafKa教程
  • 如何在 Ubuntu 22.04 中安装 Docker 引擎和 Linux 版 Docker Desktop 桌面软件
  • 基于RK3568/RK3588+全隔离串口+多电力协议接入电力网关机,用于新能源光伏风能等电站监测运维
  • 软件测试用例(沉淀中)
  • 华清远见25072班网络编程学习day1
  • 【Python办公】[ 网络剪切板 ]免费图床工具GUI界面打包(电脑上传-手机扫码下载)
  • [吾爱原创] 【游戏】王富贵的果菜园
  • Linux系统:线程同步与生产消费模型
  • 深入理解 IP 协议
  • NTP配置为客户端广播监听模式
  • QPS和RPM的全称
  • 打印机已联网,但打印机显示“未连接”,解决方案
  • 【Github | Git】如何彻底删除 SSH 密钥公钥:删除本地密钥公钥 删除GitHub密钥公钥
  • ARM 体系结构与存储器
  • <android>反编译魔改安卓系统应用并替换
  • 面试题:Redis要点总结(进阶)
  • Web安全基石:深入理解与防御SQL注入漏洞
  • PAT 1005 Spell It Right