1.Writer单个字符往文件中写
import java.io.FileWriter;
import java.io.IOException;
/*
java.io.Writer类: 字符输出流的顶层抽象父类 用来写出字符的 写出去
常用方法:
- public abstract void close() :关闭流释放资源。
- public abstract void flush() :刷新缓冲中的内容到目的地。
- public void write(int c) :写出一个字符。
- public void write(char[] chs):写出一个字符数组。
- public void write(char[] chs, int off, int len) :写出一个字符数组的一部分。
参数:
char[] chs: 字符数组
int off: 起始索引
int len: 写出字符的个数
- public void write(String str) :写出一个字符串。
- public void write(String str, int off, int len) :写出一个字符串的一部分。
参数:
String str: 字符串
int off: 起始索引
int len: 写出字符的个数
java.io.Writer类: 抽象类 必须使用子类
常用子类:
java.io.FileWriter类:文件字符输出流 向文件写出一个/多个字符的 写出去 目标文件
构造方法:
public FileWriter(String path)
public FileWriter(File path)
参数: String/File类型的文件路径
步骤:
1.创建文件字符输出流FileWriter类的对象fw,绑定目标文件
2.文件字符输出流FileWriter类的对象fw调用write方法,写出字符到文件
3.文件字符输出流FileWriter类的对象fw调用close方法,关闭流,释放资源
*/
public class Demo03Writer {
public static void main(String[] args) throws IOException {
//1.创建文件字符输出流FileWriter类的对象fw,绑定目标文件
FileWriter fw = new FileWriter("day11\\02_代码\\day11\\fw1.txt");
//2.文件字符输出流FileWriter类的对象fw调用write方法,写出字符到文件
fw.write('a');
fw.write(97);
fw.write('中');
fw.write('国');
//3.文件字符输出流FileWriter类的对象fw调用close方法,关闭流,释放资源
fw.close();
}
}
2.Writer把字符数组往文件中写
import java.io.FileWriter;
import java.io.IOException;
/*
常用方法:
- public void write(char[] chs):写出一个字符数组。
- public void write(char[] chs, int off, int len) :写出一个字符数组的一部分。
参数:
char[] chs: 字符数组
int off: 起始索引
int len: 写出字符的个数
- public void write(String str) :写出一个字符串。
- public void write(String str, int off, int len) :写出一个字符串的一部分。
参数:
String str: 字符串
int off: 起始索引
int len: 写出字符的个数
步骤:
1.创建文件字符输出流FileWriter类的对象fw,绑定目标文件
2.文件字符输出流FileWriter类的对象fw调用write方法,写出字符到文件
3.文件字符输出流FileWriter类的对象fw调用close方法,关闭流,释放资源
*/
public class Demo04Writer {
public static void main(String[] args) throws IOException {
//1.创建文件字符输出流FileWriter类的对象fw,绑定目标文件
FileWriter fw = new FileWriter("day11\\fw2.txt");
//2.文件字符输出流FileWriter类的对象fw调用write方法,写出字符到文件
//写出一个字符数组
char[] chs = "今天工作不努力,明天努力找工作".toCharArray();
fw.write(chs);
//把chs数组的内容 明天努力找工作 重新写一遍
//写出一个字符数组的一部分
fw.write(chs,8,7);
//写出一个字符串
String s = "键盘敲烂,年薪过百万";
fw.write(s);
//写出一个字符串的一部分, 年薪过百万 重新写一遍
fw.write(s,5,5);
//3.文件字符输出流FileWriter类的对象fw调用close方法,关闭流,释放资源
fw.close();
}
}
3.续写和换行
import java.io.FileWriter;
import java.io.IOException;
/*
文件的续写与换行
1.续写:
FileWriter类的构造方法
FileWriter(File path,boolean append)
FileWriter(String path,boolean append)
参数:
1.File/String类型的文件路径
2.boolean append
true: 追加写入,继续写入
false: 覆盖写入,重新写入
不指定第二个参数,默认是false
2.换行:
系统中的换行:
- Windows系统里,每行结尾是 回车+换行 ,即\r\n;
- Unix系统里,每行结尾只有 换行 ,即\n;
- Mac系统里,每行结尾是 回车 ,即\r。从 Mac OS X开始与Linux统一。
*/
public class Demo05Writer {
public static void main(String[] args) throws IOException {
FileWriter fw = new FileWriter("day11\\02_代码\\day11\\fw3.txt", true);
fw.write("快到五一放假了....");
//写换行
fw.write("\r\n");
fw.write("有什么安排呢?");
//写换行
fw.write("\r\n");
fw.write("据说出去旅游,人很多...");
//写换行
fw.write("\r\n");
fw.write("还是老实的敲代码吧?");
//写换行
fw.write("\r\n");
fw.close();
}
}
4.flash和close的区别
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
/*
flush和close的区别
1.字节流内部没有缓冲区,只要调用write方法,就是写出到目的地,所以不关流,也不会丢失数据
2.字符流内部有缓冲区,调用write方法,先写到缓冲区,如果缓冲区数据存满了,会自动刷新到目的地,
如果没有执行关闭流的动作,导致缓冲区可能还有数据,程序停止,数据丢失
3.flush方法,把缓冲区中的数据,刷新到目的地,执行flush以后,
可以继续调用write方法写出数据
4.close方法内部,会先执行一次flush操作
5.close方法之后,不能继续调用write方法写出数据
记住一句话: io流对象,使用完毕,务必关闭流对象
*/
public class Demo06FlushVSClose {
public static void main(String[] args) throws IOException {
/*FileOutputStream fos = new FileOutputStream("day11\\fc.txt");
fos.write("你好".getBytes());*/
FileWriter fw = new FileWriter("day11\\fc.txt");
fw.write("你好\r\n");
//调用flush方法,把缓冲区中的数据,刷新到目的地
//fw.flush();
fw.write("大家好\r\n");
//调用flush方法,把缓冲区中的数据,刷新到目的地
//fw.flush();
/*while(true) {
}*/
//关闭流
fw.close();
//fw.write("好好学习,天天向↑\r\n");
}
}