「这是我参与2022首次更文挑战的第4天,活动详情查看:2022首次更文挑战」。
前言
大家好,我是程序猿小白 gw_Gw,很高兴能和大家一起学习进步。
以下内容部分来自于网络,如有侵权,请联系我删除,本文仅用于学习交流,不用作任何商业用途。
摘要
本文主要介绍FileWriter字符输出流的基本概念和使用。
欢迎点击传送门了解更多IO流。
FileWriter使用字符流写入文件
1.1 什么是FileWriter
FileWriter是java.io包下的OutputStreamWriter的子类,是写入字符文件的便捷类。
1.2 FileWriter的构造方法
FileWriter(File file)
根据给定的 File 对象构造一个 FileWriter 对象。
FileWriter(File file, boolean append)
根据给定的 File 对象构造一个 FileWriter 对象。
FileWriter(String fileName)
根据给定的文件名构造一个 FileWriter 对象。
FileWriter(String fileName, boolean append)
根据给定的文件名以及指示是否附加写入数据的 boolean 值来构造 FileWriter 对象。
【参数解释】
- File file:文件对象
- String name:具体的文件路径
- boolean append:true表示追加写,false表示覆盖写
【实例展示】
String path = "Study01\src\main\java\FileDemo\1.txt";
File file = new File(path);
FileWriter fileWriter = new FileWriter(file);
FileWriter fileWriter1 = new FileWriter(file,true);
FileWriter fileWriter2 = new FileWriter(path);
FileWriter fileWriter3 = new FileWriter(path,true);
1.3 FileWriter的常用方法
FileWriter的方法都是继承而来,常用方法如下。
void close()
关闭此流,但要先刷新它。
void flush()
刷新该流的缓冲。
String getEncoding()
返回此流使用的字符编码的名称。
void write(char[] cbuf, int off, int len)
写入字符数组的某一部分。
void write(int c)
写入单个字符。
void write(String str, int off, int len)
写入字符串的某一部分。
Writer append(char c)
将指定字符添加到此 writer,相当于writer方法。
同样我们先来看一下flush和close方法。OutputStreamWriter对flush方法和close方法进行了重写。
public void flush() throws IOException {
se.flush();
}
我们一路往下发现,它实际上调用了
void implFlushBuffer() throws IOException {
if (this.bb.position() > 0) {
this.writeBytes();
}
}
也就是说实际上写入的内容在缓冲区中,我们需要使用flush方法把缓冲区的内容强制写入到文件中。而在close方法中也调用了flush方法。
既然close方法和flush都能把缓冲区的内容写入到文件中,那他们有什么区别呢?
- close方法调用后会关闭流资源,就不能在使用流来写入文件。
- flush方法只会把数据写入到文件中,后面还可以继续写入操作。
那接下来我们就来看具体write方法的使用。
fileWriter.write("adfv");
如果不使用flush方法或close方法文件中是没有内容的。
使用了close或flush方法后,内容才会被写入到文件中。
fileWriter.write("adfv");
fileWriter.flush();
fileWriter.close();
同样也验证了上面的flush方法。
来看剩下的write方法,可以一次写入多个字符。
char[] ch = new char[]{'a','b','c','d','e','f','g','w','r','t'};
for (int i = 0; i < 10; i++) {
fileWriter.write(ch,0,5);
fileWriter.flush();
}
fileWriter.write("hellowold",0,5);
fileWriter.flush();
最后来看一下append()方法。
public Writer append(char c) throws IOException {
write(c);
return this;
}
查看源码我们发现,它其实就是调用了write方法。
1.4 FileWriter小结
FileWriter字符流使用步骤:
- 创建FileWriter流对象。
- 使用write方法,将数据写入缓冲区。
- 使用flush方法,将缓冲区中的数据写入文件。
- 使用close方法,关闭流资源。
小结
以上就是关于FileWriter的一些简单介绍,希望对读者有所帮助,如有不正之处,欢迎留言指正。