7.2 读写文本文件

系列 -

本教学实验手册介绍了如何在Java中使用FileWriterBufferedReader进行文本文件的写入和读取操作。包括使用try-with-resources自动管理资源、处理文件不存在和覆盖情况,以及逐行读取文件内容。

在Java中,写入文本文件最简单的方式是使用FileWriter。下面我们来创建一个程序,将文本写入文件:

java

import java.io.FileWriter;  
import java.io.IOException;

public class Example08 {
    public static void main(String[] args) {
	    // 使用try-with-resources自动关闭资源
        try (FileWriter writer = new FileWriter("note.txt")) {
            // 写入一些文本
            writer.write("这是第一行\n");  // \n表示换行
            writer.write("这是第二行\n");
            System.out.println("文件写入成功!");
        } catch (IOException e) {
            System.out.println("写入文件出错:" + e.getMessage());
        }
    }
}

运行结果:

在项目根目录下可以找到note.txt文件,其内容为:

代码说明:

  1. FileWriter writer = new FileWriter("note.txt")
    • 创建FileWriter对象,如果文件不存在会自动创建
    • 如果文件已存在,会覆盖原文件
  2. writer.write("这是第一行\n")
    • write方法用于写入字符串
    • \n是换行符,表示换行
  3. try-with-resources语句
    • 自动处理资源关闭
    • 不需要手动调用close()方法

补充:常规写法(不使用try-with-resources)

java

import java.io.FileWriter;  
import java.io.IOException;  
  
public class Example09 {  
    public static void main(String[] args) {  
        FileWriter writer = null;  // 在try外声明,以便finally中可以访问  
        try {  
            writer = new FileWriter("note.txt");  
            writer.write("这是第一行\n");  
            writer.write("这是第二行\n");  
            System.out.println("文件写入成功!");  
        } catch (IOException e) {  
            System.out.println("写入文件出错:" + e.getMessage());  
        } finally {  
            // 在finally中确保关闭资源  
            if (writer != null) {  // 防止writer未初始化就抛出异常  
                try {  
                    writer.close();  // close()方法也可能抛出IOException  
                } catch (IOException e) {  
                    System.out.println("关闭文件出错:" + e.getMessage());  
                }  
            }  
        }  
    }  
}

读取文本文件我们使用BufferedReader,它可以方便地实现逐行读取:

java

import java.io.BufferedReader;  
import java.io.FileReader;  
import java.io.IOException;

public class Example10 {
    public static void main(String[] args) {
        // 使用try-with-resources自动关闭资源
        try (BufferedReader reader = new BufferedReader(
                new FileReader("note.txt"))) {
            
            String line;
            // 逐行读取文件内容
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
            
        } catch (IOException e) {
            System.out.println("读取文件出错:" + e.getMessage());
        }
    }
}

运行结果:

编写一个Java程序,实现以下功能:

  1. 提示用户输入文件名
  2. 询问用户要写入多少行内容
  3. 循环让用户输入每行内容
  4. 将用户输入的内容写入文件
  5. 最后读取并显示文件内容

部分代码

java

import java.io.*;  
import java.util.Scanner;  
  
public class FileOperationHomework {  
    public static void main(String[] args) {  
        Scanner scanner = new Scanner(System.in);  
        // 1. 获取文件名  
        
  
        // 2. 获取要写入的行数  
        
  
        // 3. 写入文件  
        
        // 4. 读取并显示文件内容  
        System.out.println("\n文件内容如下:");  
        System.out.println("--------------------");  
  
        
    }  
}

运行截图

相关内容