FileReader
package com.shuhuadream.file;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
/*
* 字节流:字节流读取的是文件中的二进制数据,读到的数据并不会帮你转换成你看得懂的字符。
*
* 字符流:字符流会把读取到的二进制数据进行对应的编码和解码工作。字符流 = 字节流+编码(解码)
*
* 输入字符流:
* --------------|Reader 输入字符流的基类 抽象类
* ------------------|FileReader 读取文件的输入字符流
*
* FileReader的用法:
*/
public class Demo01 {
public static void main(String[] args) {
fileReader();
}
public static void fileReader(){
//找到目标文件
File file = new File("d:\\demo\\b.txt");
//建立数据的输出通道
FileReader fr = null;
try {
fr = new FileReader(file);
//建立缓冲字符数组读取文件数据
char[] buf = new char[1024];
int length = 0;
while((length = fr.read(buf))!=-1){
System.out.println(new String(buf,0,length));
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
if(fr!=null){
fr.close();
}
} catch (IOException e) {
//e.printStackTrace();
throw new RuntimeException(e);
}
}
}
}
FileWriter
package com.shuhuadream.file;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
//输出字符流
/**
* -------------|Write 输出字符流的基类
* ---------------|FileWriter 向文件写入数据的输出字符流
*
* FileWriter要注意的事项:
* 1.FileWriter写数据的时候,FileWriter内部是维护了一个1024个字符数组的,写数据的时候会先写入到它维护的字符数组中,
* 如果需要把数据真正写到硬盘上,需要调用flush或者是close方法或者是填满了内部的字符数组
* 2.使用FileWriter的时候,如果目标文件不存在,那么会自动创建目标文件
* 3.使用FileWrite的时候,如果目标文件已经存在了,那么默认情况会先清理文件中的数据,然后再写入数据,如果需要在原来的
* 基础上追加数据。需要使用new FileWrite(File,boolean) 的构造方法