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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,886评论 18 139
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,218评论 2 33
  • 广义上的二进制文件包括文本文件,这里讨论的是狭义上的二进制文件与文本文件的比较: 1. 能存储的数据类型不同 文本...
    时待吾阅读 11,849评论 2 28
  • 微信中不知不觉已有了2000多个好友,手机的内存也越来越不足,而随着好友的增多,不免有许多的朋友就在睡眠,也在不知...
    dbcc8b4dd97c阅读 323评论 0 0
  • 出入学校,步入职场,意味着所有的事情都要自己去面对,很多大学生都还没有进入角色,抱怨职场潜规则,抱怨没有展示自己的...
    囊中智慧阅读 846评论 0 1