flush方法和close方法的区别和字符输出流写数据的其他方法和字符输出流的续写和换行
flush方法和close方法的区别
flush:刷新缓冲区,流对象可以继续使用
close:先刷新缓冲区,然后通知系统释放资源。刘对象不可以再被使用了。
public class demo02 {
public static void main(String[] args) throws IOException {
//1.创建一个FileWriter对象,构造方法中绑定要写入数据的目的地
FileWriter fw = new FileWriter("Document\\1.txt");
//2.使用FileWriter中的方法write把数据写入到内存缓冲区中(字符转为字节的过程)
fw.write(97);
//3.使用FileWriter中的方法flush,把内存缓冲区中的数据,刷新到文件中
fw.flush();
//刷新流后可以继续使用
fw.write(98);
//4.释放资源(会先把内存缓冲区中的数据刷新到文件中)
fw.close();
//close方法之后流对象就已经关闭了从内存中消失了,就不能再使用了
fw.write(99);
}
}
字符输出流写数据的其他方法
字符输出流写数据的其他方法:
void write(char[] cbuf);写入字符数组
abstract void write(char[] cbuf,int off,int len);写入字符数组的某一部分,off是数组开始的索引,len写的字符个数
void write(String str)写入字符串
void write(char[] cbuf,int off,int len);写入字符串的某一部分,off是数组开始的索引,len写的字符个数
代码实现:
public class demo03 {
public static void main(String[] args) throws IOException {
FileWriter fw = new FileWriter("Document\\1.txt");
char[] cs = {'a','b','c','d'};
//void write(char[] cbuf);写入字符数组
fw.write(cs);//abcd
//abstract void write(char[] cbuf,int off,int len);写入字符数组的某一部分,off是数组开始的索引,len写的字符个数
fw.write(cs,1,3);//bcd
//void write(String str)写入字符串
fw.write("你好我是张三");//你好我是张三
//void write(char[] cbuf,int off,int len);写入字符串的某一部分,off是数组开始的索引,len写的字符个数
String str = "你好你好讷讷讷讷讷讷";
fw.write(str,3,6);//好讷讷讷讷讷
fw.close();
}
}
字符输出流的续写和换行
package com.yang.Test.IOStudy.OutStudy;
import java.io.FileWriter;
import java.io.IOException;
/**
* 续写和换行
* 续写,追加写:使用两个参数的构造方法
* FileWriter(String fileName, boolean append);
* FileWriter(File file, boolean append);
* 参数:
* String fileName,File file:写入数据的目的地
* boolean append:续写开关 true:不会创建新的文件覆盖源文件,可以续写;false:创建新的文件覆盖源文件
* 换行:换行符号
* windows:\r\n
* linux:/n
* mav:/r
*/
public class demo04 {
public static void main(String[] args) throws IOException {
FileWriter fw = new FileWriter("Document\\1.txt",true);
for (int i = 0; i < 10; i++) {
fw.write("HelloWorld"+i+"\r\n");
}
fw.close();
}
}