原创 大常运维
FileWriter(文件字符输出流):
作用:以内存为基准,把内存中的数据以字符的形式写出到文件中去。
构造函数和方法:
代码:
package cn.chang.d1_char_stream;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
/**
* 目标:掌握文件字符输出流,写字符数据出去
*/
public class FileWriterTest2 {
public static void main(String[] args) {
try(
// 创建一个文件字符输出流管道与目标文件接通
Writer fw = new FileWriter("io-app2/src/chang02.txt");
) {
// 1. public void write(int c);
fw.write('a');
fw.write(97);
fw.write('磊');
fw.write("\r\n");
// 2. public void write(String c);
fw.write("我爱你中国abc");
// 3. public void write(String c, int pos, int len);
fw.write("我爱你中国abc", 0, 5);
// 4. public void write(char[] buffer);
char[] buffer = {'黑', '龙', '江', 'a', 'b', 'c'};
fw.write(buffer);
fw.write("\r\n");
// 5. public void write(char[] buffer, int pos, int len);
char[] buffer1 = {'黑', '龙', '江', 'a', 'b', 'c'};
fw.write(buffer1, 0, 3);
} catch (Exception e) {
e.printStackTrace();
}
}
}
运行结果:
fw.write("\r\n"); // 换行
数据追加,后面有个参数append改成true。这边不再演示。
字符输出流使用时的注意事项:
字符输出流写出数据后,必须刷新流,或者关闭流,写出去的数据才能生效。
数据都是先写到缓冲区中,缓冲区在内存中,写到缓冲区速度都是很快的,最后通过某种机制把数据通过系统调用从缓冲区同步到文件中,整体性能会好很多。
我们怎么通知缓冲区同步到文件中呢?
通过关闭流或者刷新流。
package cn.chang.d1_char_stream;
import java.io.FileWriter;
import java.io.Writer;
/**
* 目标:搞清楚字符输出流使用时的注意事项
*/
public class FileWriterTest3 {
public static void main(String[] args) throws Exception {
Writer fw = new FileWriter("io-app2/src/chang03.txt");
// 写字符数据出去
fw.write('a');
fw.write('b');
fw.write('c');
fw.write('d');
fw.write("\r\n");
fw.write("我爱你中国");
fw.write("\r\n");
fw.write("我爱你中国");
// 刷新流 关闭流
// fw.flush();
//
// fw.write("\r\n");
// fw.write("张三");
// fw.flush();
fw.close();
}
}
关闭流:包含刷新流。
刷新流还是能再刷数据,关闭流就不行。
另外,一旦缓冲区写满了,会自动刷新数据。