java 字符输出流_Java 之 字符输出流[Writer]
一、字符输出流
java.io.Writer 抽象类是表示用于写出字符流的所有类的超类,将指定的字符信息写出到目的地。
它定义了字节输出流的基本共性功能方法。
void write(int c) 写入单个字符。写入0 到 65535 之间的Unicode码。
void write(char[] cbuf) 把整个字符数组的内容写进去。
abstract void write(char[] cbuf, int off, int len) 写入字符数组的某一部分,off数组的开始索引,len写的字符个数。
void write(String str) 写入字符串。
void write(String str, int off, int len) 写入字符串的某一部分,off字符串的开始索引,len写的字符个数。
void flush() 刷新该流的缓冲,则立即将它们写入预期目标。
void close() 关闭此输出流并释放与该流关联的所有系统资源
Writer 抽象类下面的子类结构:
图中深色的为节点流,浅色的为处理流。
二、FileWriter 类
java.io.FileWriter 类是写出字符到文件的便利类。构造时使用系统默认的字符编码和默认字节缓冲区 。
作用:把内存中字符数据写入到文件中。
1、构造方法
FileWriter(File file) : 创建一个新的 FileWriter,给定要读取的File对象。
FileWriter(String fileName) : 创建一个新的 FileWriter,给定要读取的文件的名称。
参数:写入数据的目的地。
File file:文件对象
String fileName:文件的路径。
构造方法作用:
① 会创建一个 FileWriter 对象
② 会根据构造方法中传递的文件 / 文件的路径,创建对象
③ 会把 FileWriter 对象指向创建好的文件。
字符输出流的使用步骤【重要】:
① 创建FileWriter对象,构造方法中绑定要写入数据的目的地
② 使用FileWriter中的方法write,把数据写入到内存缓冲区中(字符转换为字节的过程)
③ 使用FileWriter中的方法flush,把内存缓冲区中的数据,刷新到文件中
④ 释放资源(会先把内存缓冲区中的数据刷新到文件中)
2、基本写入数据
(1)写出字符:write(int b) 方法,每次可以写出一个字符数据,代码使用演示:
1 public static void main(String[] args) throwsIOException {2 //1.创建FileWriter对象,构造方法中绑定要写入数据的目的地
3 FileWriter fw = new FileWriter("E:\\d.txt");4 //2.使用FileWriter中的方法write,把数据写入到内存缓冲区中(字符转换为字节的过程)5 //void write(int c) 写入单个字符。
6 fw.write(97);7 //3.使用FileWriter中的方法flush,把内存缓冲区中的数据,刷新到文件中8 fw.flush();9 //4.释放资源(会先把内存缓冲区中的数据刷新到文件中)
10 fw.close();11 }
注意:如果未调用 close 方法,数据只是保存到了缓冲区,并未写出到文件中。
(2)关闭与刷新
区别:
flush :刷新缓冲区,流对象可以继续使用。
close : 先刷新缓冲区,然后通知系统释放资源。流对象不可以再被使用了。
Demo:
1 public static void main(String[] args) throwsIOException {2 //1.创建FileWriter对象,构造方法中绑定要写入数据的目的地
3 FileWriter fw = new FileWriter("E:\\e.txt");4 //2.使用FileWriter中的方法write,把数据写入到内存缓冲区中(字符转换为字节的过程)5 //void write(int c) 写入单个字符。
6 fw.write(97);7 //3.使用FileWriter中的方法flush,把内存缓冲区中的数据,刷新到文件中
8 fw.flush();9 //刷新之后流可以继续使用
10 fw.write(98);11
12 //4.释放资源(会先把内存缓冲区中的数据刷新到文件中)
13 fw.close();14
15 //close方法之后流已经关闭了,已经从内存中消失了,流就不能再使用了
16 fw.write(99);//IOException: Stream closed
17 }
注意:即便是flush方法写出了数据,操作的最后还是要调用close方法,释放系统资源。
3、写出其他数据
(1)写出字符数组:write(char[] cbuf) 和 write(char[] cbuf, int off, int len) ,每次可以写出字符数组中的数据,用法类似FileOutputStream,代码使用演示:
1 public static void main(String[] args) throwsIOException {2 FileWriter fw = new FileWriter("E:\\f.txt");3 char[] cs = {'a','b','c','d','e'};4 //void write(char[] cbuf)写入字符数组。
5 fw.write(cs);//abcde6
7 //void write(char[] cbuf, int off, int len)写入字符数组的某一部分,off数组的开始索引,len写的字符个数。
8 fw.write(cs,1,3);//bcd
9
10 fw.close();11 }
(2)写出字符串:: write(String str) 和 write(String str, int off, int len) ,每次可以写出字符串中的数据,更为方便,代码使用演示:
1 public static void main(String[] args) throwsIOException {2 FileWriter fw = new FileWriter("E:\\f.txt");3
4 //void write(String str)写入字符串。
5 fw.write("博客园");//博客园6
7 //void write(String str, int off, int len) 写入字符串的某一部分,off字符串的开始索引,len写的字符个数。
8 fw.write("天道酬勤啊",2,3);//酬勤啊
9
10 fw.close();11 }
(3)续写和换行
续写,追加写:使用两个参数的构造方法
FileWriter(String fileName, boolean append)
FileWriter(File file, boolean append)
参数:
String fileName,File file:写入数据的目的地。
boolean append:续写开关 true:不会创建新的文件覆盖源文件,可以续写; false:创建新的文件覆盖源文件。
换行:换行符号
windows:\r\n
Linux / Unix:\n
mac:\r
Demo :
1 public static void main(String[] args) throwsIOException {2 FileWriter fw = new FileWriter("E:\\g.txt",true);3 for (int i = 0; i <10 ; i++) {4 fw.write("HelloWorld"+i+"\r\n");5 }6
7 fw.close();8 }
注意:字符流,只能操作文本文件,不能操作图片,视频等非文本文件。单纯读或者写文本文件时,使用字符流,其他情况使用字节流。
java 字符输出流_Java 之 字符输出流[Writer]相关推荐
- java 文件字节流_Java:文件字符流和字节流的输入和输出
最近在学习Java,所以就总结一篇文件字节流和字符流的输入和输出. 总的来说,IO流分类如下: 输入输出方向: 输入流(从外设读取到内存)和输出流(从内存输出到外设) 数据的操作方式: 字节流 ...
- java 字节编码_java中字符与字节的编码关系
一个英文字母字符存储需要1个字节.在 GB 2312 编码或 GBK 编码中,一个汉字字符存储需要2个字节. 在UTF-8编码中,一个英文字母字符存储需要1个字节,一个汉字字符储存需要3到4个字节.在 ...
- java io字符输出流_JAVA IO 字符输入流与输出流总结说明
目录 OutputStreamWriter 用于向本地文件中写入数据 InputStreamReader 用于读取本地文件中的字节数据 FileReader 用于读取本地文件中的字节数据 FileWr ...
- java 字节流 区别_java字节流字符流区别-嗨客网
Java字节流与字符流区别 Java字节流与字符流区别教程 我们在 实际上字节流在对文件操作的时候,不会用到缓冲区(内存),对文件本身直接操作而字符流在对文件操作的时候用到了缓冲区,通过缓冲区来对文件 ...
- java 对象读写_java 对象输入输出流读写文件的操作实例
java 对象输入输出流读写文件的操作实例 java 支持对对象的读写操作,所操作的对象必须实现Serializable接口. 实例代码: package vo; import java.io.Ser ...
- java stringbuffer数组_Java中字符数组、String类、StringBuffer三者之间相互转换
一.StringBuffer与String的相互转换 1.将StringBuffer转换成String StringBuffer类成员toString函数可将其转换成String类型. StringB ...
- java字符串匹配_Java实现字符串匹配(基于正则)
有一个String,如何查询其中是否有y和f字符?最黑暗的办法就是: 程序1:我知道if.for语句和charAt() class Test{ public static void main(Stri ...
- java 半角数字_Java中字符的半角和全角
前几天在工作中遇到一个问题 在一个程序中进行Excel的导入,将Excel中的一系列城市编码在程序中解析,转换为int型,因为Excel中的部分城市编码带有空格,因此需要在代码中将其转换为String ...
- java 字符串子串_java实现字符串匹配求两个字符串的最大公共子串
本文实例讲述了java实现求两个字符串最大公共子串的方法.分享给大家供大家参考,具体如下: 最近在项目工作中有一个关于文本对比的需求,经过这段时间的学习,总结了这篇博客内容:求两个字符串的最大公共子串 ...
最新文章
- Linux下用C语言最基本的程序开发与调试
- esxi宿主机的本地存储-非活动
- chrome设置微信ua_新支付宝json_ua分析
- 【牛客 - 303D第十五届浙江大学宁波理工学院程序设计大赛(同步赛)】Campaign(二进制枚举,位运算,暴力,思维)
- 刷新页面,无论点击多少次让Element UI的Message消息提示弹出一个
- kubernetes视频教程笔记 (6)-kubernetes集群安装
- Atitit pwa app prblm sulo目录1.1.1. 安卓的chrome没有弹添加到桌面的弹窗 11.1.2. 如何判断是否从主屏幕访问 11.1.3. 如何监听添加到桌面事
- dota2 自定义官方服务器,DOTA2官网更新:服务器扩容 首部官方漫画发布
- Maven知识补充(项目模型变量,Maven属性,依赖项的范围,查找公共存储库的依赖项等)
- JavaScript 身份证格式验证
- php视频直播系统源码Android 修改状态栏颜色 白色、透明色
- MySQL 错误【四】Value ‘0000-00-00 00:00:00’ can not be represented as java.sql.Timestamp
- python 白噪声检验-使用python实现时间序列白噪声检验方式
- 卖动感单车能帮助keep走出变现困境吗?
- CTF-攻防世界web新手入门篇
- 专家解读:读研到底值不值(转自中华英才网)
- Java云电子病历系统源码,提供电子病历在线制作、管理和使用的一体化电子病历
- 天地图标注获取与修改并保存信息
- 高项论文练习--项目进度管理
- 2013年炙手可热的5种工作
热门文章
- H3C AC+AP三层组网架构,AP自动上线自动固化
- redash+mysql_Redash本地开发环境搭建
- python局域网嗅探_使用python来嗅探局域网内的qiuqiu号码
- 云顶之弈机器人法爆_云顶之弈有什么套路?
- Linux Mint 18.1 下安装网易云音乐1.0
- UEFI启动与BIOS启动哪个好,有什么区别
- Win10 VS调试MiniBlink
- 怎么才能学好java?java的学习方法
- 听说你想去大厂看学姐,带你看看虎牙产品运营三面+HR面
- redis命令,开发规范以及应用场景