上一篇:IO流之文件字符输入流【FileReader】https://www.jianshu.com/p/d35a45e96eef
一、字符输出流【Writer】
java.io.Writer 抽象类是表示用于写出字符流的所有类的超类,将指定的字符信息写出到目的地。它定义了字符输出流的基本共性功能方法。
- void write(int c) 写入单个字符。
- 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() 关闭此流,但要先刷新它
二、FileWriter【文件字符输出流】
java.io.FileWriter extends OutputStreamWriter extends Writer
FileWriter:把内存数据写入到文件中。
2.1 构造方法
- FileWriter(File file) : 创建一个新的 FileWriter,给定要读取的File对象。
- FileWriter(String fileName) : 创建一个新的 FileWriter,给定要读取的文件的名称。
当你创建一个流对象时,必须传入一个文件路径,类似于FileOutputStream。 构造举例,代码如下:
public static void main(String[] args) throws IOException {
// 使用File对象创建流对象
File file = new File("a.txt");
FileWriter fw = new FileWriter(file);
// 使用文件名称创建流对象
FileWriter fw2 = new FileWriter("b.txt");
}
构造方法的作用:
1、会创建一个FileWriter对象
2、会根据构造方法中传递的文件/文件路径,创建文件
3、会把FileWriter对象指向创建好的文件
三、写出数据
写出字符: write(int b) 方法,每次可以写出一个字符数据,代码使用演示:
public static void main(String[] args) throws IOException {
// 使用文件名称创建流对象
FileWriter fw = new FileWriter("IO流//d.txt");
//使用FileWriter中的方法write,把数据写入到内存缓冲区(字符转换为字节的过程)
fw.write(98);
fw.write('b');
fw.write((30000));
//使用FileWriter中的方法flush,把内存缓冲区的数据,刷新到文件中
fw.flush();
//释放资源(会先把内存缓冲区的数据,刷新到文件中)
fw.close();
}
结果:bb田
关闭和刷新
因为内置缓冲区的原因,如果不关闭输出流,无法写出字符到文件中。但是关闭的流对象,是无法继续写出数据 的。如果我们既想写出数据,又想继续使用流,就需要 flush 方法了。
- flush :刷新缓冲区,流对象可以继续使用。
- close :先刷新缓冲区,然后通知系统释放资源。流对象不可以再被使用了。
写出字符数组 : write(char[] cbuf) 和 write(char[] cbuf, int off, int len) ,每次可以写出字符数组中的数据,用法类似FileOutputStream,代码使用演示:
public static void main(String[] args) throws IOException {
FileWriter fr = new FileWriter("IO流//d.txt");
// 字符串转换为字节数组
char[] b = "你好棒棒哦".toCharArray();
// 写出字符数组
fr.write(b); // 你好棒棒哦
// 写出从索引2开始,2个字节。索引2是'棒',两个字节,也就是'棒棒'
fr.write(b,2,2); //你好棒棒哦棒棒
fr.close();
}
结果:你好棒棒哦棒棒
写出字符串: write(String str) 和 write(String str, int off, int len) ,每次可以写出字符串中的数据,更为方便,代码使用演示
public static void main(String[] args) throws IOException {
FileWriter fr = new FileWriter("IO流//d.txt");
// 字符串
String msg = "乘风破浪的姐姐";
// 写出字符数组
fr.write(msg); //乘风破浪的姐姐
// 写出从索引2开始。索引2是'破',两个字节,也就是'破浪'。
fr.write(msg,2,2); // 乘风破浪的姐姐破浪
fr.close();
}
结果:乘风破浪的姐姐破浪
续写和换行:操作类似于FileOutputStream。
- FileWriter(String fileName, boolean append)
- FileWriter(File file, boolean append)
参数:
fileName、file:写入数据的目的地
append:续写开关 true:不会创建新文件覆盖源文件 false:创建新文件覆盖源文件
public static void main(String[] args) throws IOException {
FileWriter fr = new FileWriter("IO流//d.txt",true);
for (int i = 0; i < 4; i++) {
fr.write("追加写");
fr.write("\r\n");
}
fr.flush();
fr.close();
}
输出结果:
你好棒棒哦棒棒乘风破浪的姐姐破浪追加写
追加写
追加写
追加写
换行符号:
window:\r\n
linux:\n
mac:\r
下一篇:IO流之缓冲流 https://www.jianshu.com/p/f80daa6fe45f
网友评论