下面通过三个小案列了解IO字节流是如何读写。
1 案列示例
案例1: FileWriter字符流的写
public static void write() {
//创建一个FileWriter对象,该对象一被初始化就必须要明确被操作的文件。
//而且该文件会被创建到指定目录下。如果该目录有同名文件,那么该文件将被覆盖。
FileWriter fw = null;
try {
//目的是明确数据要存放的目的地,加true表示内容不覆盖
fw = new FileWriter("E:\\TestDesc\\io\\test4.txt", true);
fw.write("hello world 2020!");
//刷新流对象缓冲中的数据,将数据刷到目的地中
fw.flush();
//关闭流资源,但是关闭之前会刷新一次内部缓冲中的数据。当我们结束输入时候,必须close();
fw.write("first_test comeback!");
fw.close();
//flush和close的区别:flush刷新后可以继续输入,close刷新后不能继续输入
} catch (IOException e) {
e.printStackTrace();
}
}
案例2:FileReader字符流的读
StringBuffer stringBuffer = new StringBuffer();
FileReader fr = null;
try {
fr = new FileReader("E:\\TestDesc\\io\\test4.txt");
char[] str = new char[1024];
int num = 1;
while((num = fr.read(str)) != -1) {//-1表示组后的位置
//存放在新字符串中
stringBuffer.append(new String(str,0,num));
}
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(stringBuffer.toString());
案例3: 字符流的FileReader读与FileWriter写
public static void readAndWrite() {
FileWriter fw = null;
StringBuffer stringBuffer = new StringBuffer();
FileReader fr = null;
try {
fr = new FileReader("E:\\TestDesc\\io\\test5.txt");
fw = new FileWriter("E:\\TestDesc\\io\\test6.txt",true);
char[] str = new char[1024];
int num = 1;
while((num = fr.read(str)) != -1) {//-1表示组后的位置
//存放在新字符串中
stringBuffer.append(new String(str, 0, num));
}
fw.write(stringBuffer.toString());
fr.close();
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}