2.3 读写文本文件

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 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方法。

你可能感兴趣的:(2.3 读写文本文件)