一、使用 FileReader 对文件进行读取
- 实例化一个文件对象
- 使用该文件对象初始化一个
FileReader
对象 - 通过
FileReader
的 read 方法来读取数据 - 最后文件流一定要进行关闭
虽然GC有自带的垃圾回收算法机制,但是对物理连接(数据库,socket连接,文件流连接)是无能为力的。 - 读入的文件是一定要存在的,不然会在实例化 FileReader 的时候会报异常
public class FileReaderWriterTest {
@Test
public void FileReaderTest() {
File file = new File("hello.txt");
FileReader fileReader = null;
char[] buffer = new char[1024];
int len;
try{
fileReader = new FileReader(file);
while((len = fileReader.read(buffer)) != -1){
for(int i = 0;i < len;i++){
System.out.print(buffer[i]);
}
}
}catch (IOException e){
e.printStackTrace();
}finally {
if(fileReader != null){
try {
fileReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
两种 read 方式
read()
是返回读入到的一个字符。如果读取到了文件末尾,那么返回 -1
通过一个个字符读取
@Test
public void FileReaderTest2(){
File file = new File("hello.txt");
FileReader fileReader = null;
int data;
try{
FileReader reader = new FileReader(file);
while((data = reader.read()) != -1){
System.out.print((char)data);
}
}catch (IOException e){
e.printStackTrace();
}finally {
if(fileReader != null){
try {
fileReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
直接读取到字符数组中
public class FileReaderWriterTest {
@Test
public void FileReaderTest() {
File file = new File("hello.txt");
FileReader fileReader = null;
char[] buffer = new char[1024];
int len;
try{
fileReader = new FileReader(file);
while((len = fileReader.read(buffer)) != -1){
for(int i = 0;i < len;i++){
System.out.print(buffer[i]);
}
}
}catch (IOException e){
e.printStackTrace();
}finally {
if(fileReader != null){
try {
fileReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
二、使用FileWriter对文件进行写操作
说明:
- 输出操作,对应的 file 是可以不存在的。
- 如果不存在,那么输出的过程中,会自动创建该文件。
- 如果存在
- 如果流使用的构造器是:
FileWriter(file,false) 或 FileWriter(file);
那么就是对原有的文件进行覆盖。 - 如果使用的构造器是:
FileWriter(file,true)
那么就是在原有的文件末尾进行追加数据。 ```java package test17;
- 如果流使用的构造器是:
import org.junit.Test;
import java.io.*;
/**
- Created By Intellij IDEA *
- @author Xinrui Yu
- @date 2021/12/5 14:04 星期日
*/
public class FileReaderWriterTest {
@Test
public void FileReaderTest() {
} }File file = new File("hello.txt");
File outFile = new File("output.txt");
String str = "计算机科学与技术";
FileReader fileReader = null;
FileWriter fileWriter = null;
char[] buffer = new char[1024];
int len;
try{
fileReader = new FileReader(file);
while((len = fileReader.read(buffer)) != -1){
for(int i = 0;i < len;i++){
System.out.print(buffer[i]);
}
}
}catch (IOException e){
e.printStackTrace();
}finally {
if(fileReader != null){
try {
fileReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
try{
fileWriter = new FileWriter(outFile);
fileWriter.write(str);
}catch (IOException e){
e.printStackTrace();
}finally {
if(fileWriter != null){
try {
fileWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```