package IOStream;
import org.junit.Test;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
public class FileReadWriter {
//
@Test
public void testFileReader() {
// fr需要提前声明
FileReader fr = null;
// 1.实例化File类的对象,指明要操作的文件
try {
File file1 = new File("hello.txt");
// 2.提供具体的流:(找到管道)
fr = new FileReader(file1);
// 3.数据的读入
// read()返回读入的一个字符,用int 接受的时ASCII码,如果达到末尾则返回-1
// 方式1:
// int data = fr.read();
// while(data != -1){
// System.out.print((char) data);
// data = fr.read();
// }
// 方式2:
int data ;
while((data = fr.read())!= -1){
System.out.print((char)data);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if(fr!=null){
fr.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
// 4.流的关闭操作
}
}
read()的重载方法:read(char cbuffer[]) 返回的是读入的字符个数
// 对read()操作方法的一个升级:使用read重载方法
// read(char[]) 返回每次读入的字符个数,比如helloworld123!,会返回5 5 4 -1
@Test
public void testFileReader2() {
// 1.File类的实例化
FileReader fr = null;
try {
File file = new File("hello.txt");
// 2.流的实例化
fr = new FileReader(file);
// 3.读入操作
// read(char[]) 返回每次读入的字符个数,比如helloworld123!,会返回5 5 4 -1
char[] cbuffer = new char[5];
int len ;
while((len = fr.read(cbuffer))!=-1){
for(int i = 0 ; i < len; i++){
System.out.print(cbuffer[i]);
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
// 4.资源关闭
if (fr != null) {
fr.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
FileWriter的说明:
package IOStream;
/*
从内存中写出数据到硬盘里
说明:
1.输出操作中File对象可以不存在,会自动创建此文件
若存在,在构造器中append:选择true为在后面继续添加,false为覆盖原文件
FileWriter(file,true/false)
2.
*/
import org.junit.Test;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class FileWriterTest {
@Test
public void testFileWriter() throws IOException {
// 1.提供File对象,指明写出的文件
File file1 = new File("hello1.txt");
// 2.提供FileWriter对象,用于数据的写出
FileWriter fw = new FileWriter(file1,false);
// 3.写出的操作
fw.write("i have a dream!\n");
fw.write("you need to have a dream!");
// 4.流资源的关闭
fw.close();
}
}