java的文件操作(IO操作)是由一组相关的Api(接口、抽象类、实现类)组成的。
本节我们介绍最常见的文本文件的读写操作。
读取文本文件内容
首先我们来看下,如何读取一个文本文件中的内容,代码如下
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class ReadDemo {
public static void main(String[] args) {
String fileName = "d:/demo/test.txt";
BufferedReader reader = null;
try {
reader = new BufferedReader(
new FileReader(fileName));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
closeReader(reader);
}
}
private static void closeReader(BufferedReader reader) {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
读取本文文件中的内容,可以有多种写法,上面例子是最常见的一种实现方式。上面代码是按照行循环读取文件中的内容
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
循环读取的每行的内容赋值给字符串变量line,然后就可以按照自己的需求处理读取的内容。上面例子只是简单的打印输出。
涉及到文件的操作一定要进行异常捕获,并且需要加finally语句,在finally中关闭打开的文件句柄。
写入文本文件
下面的例子我们将一些字符串内容写入到文本文件中。代码如:
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class WriteDemo {
public static void main(String[] args) {
String fileName="d:/demo/test.txt";
List<String> data = new ArrayList<>();
data.add("hello1");
data.add("hello2");
BufferedWriter writer = null;
try {
writer = new BufferedWriter(new FileWriter(fileName) );
for(String item:data) {
writer.write(item); //写入数据
writer.newLine(); //换行
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
closeWriter(writer);
}
}
private static void closeWriter(BufferedWriter writer) {
if(writer!=null){
try {
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
可以看出,写入文本文件和读取文本文件的过程很类似。使用到一系列的APi, 重点是调用 write方法写入数据,write写入不会自动换行,如果要换行,需要调用newLine方法。