1. FileReader
1.1 方法1: 每次读一个字符
public class FileObj {
/** 步骤:
* 1. 实例化文件,指明此文件是被操作的对象
* 2. 提供具体的流,流作用于文件之上
* 3. 读取流中的数据
4. 流的关闭操作!
*/
@Test
@Test
public void test() throws IOException {
File file = new File("E:\\helloTestIO\\hello.txt");
FileReader fileReader = new FileReader(file);
char[] chars = new char[(int) file.length()];
// The number of characters read, or -1
// * if the end of the stream
// * has been reached
int data ;
while ((data= fileReader.read()) != -1) {
System.out.println((char) data);
}
try{
if(fileReader!=null){
fileReader.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
1.2 方法2: 每次读限定长度的字符个数
/** 对read()操作升级,使用read的重载方法:
1. File类的实例化
2. fileReader流的实例化
3. 读入的操作细节/写出的操作
4. 资源的关闭
*/
@Test
public void test2() {
FileReader fileReader = null;
try {
File file = new File("E:\\helloTestIO\\hello.txt");
fileReader = new FileReader(file);
// 限定每次读的字符数量
char[] chars = new char[1024];
/*The number of characters read, or -1
* if the end of the stream
* has been reached*/
int len;
while ((len = fileReader.read(chars)) != -1) {
for (int i = 0; i < len; i++) {
System.out.print(chars[i]);
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fileReader != null) {
try {
fileReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
;
}
2. FileWriter
2.1 分批写入数据
/**
* 特点:
* 1. 如果file不存在,则会自动创建
* 1. 如果存在,会覆盖原文件;
* 2. 不同次数的写,会换行;
* 步骤:
* 1. 指定写出文件对象
* 2. 提供Filewriter实例,用于数据的写出
* 3. 写出的操作
* 4. 关闭流
*/
@Test
public void test3() throws IOException {
File file = new File("hello.txt");
FileWriter fileWriter = new FileWriter(file,true);
fileWriter.write("I have a dream!");
fileWriter.write("you need a dream!");
fileWriter.close();
}