Java文件读写入门:轻松搞定数据存储与读取

在日常开发中,经常需要把一些数据保存下来,比如用户填写的表单、程序运行的日志,或者配置信息。这时候,Java文件读写功能就派上用场了。它就像一个“记事本助手”,帮你把数据写进电脑里的文件,也能随时读出来查看。

为什么需要文件读写?

想象一下你在写一个记账小程序,每次花多少钱都输入进去。如果关掉程序后数据就没了,那下次打开还得重新记,显然不现实。通过 Java 文件读写,可以把每一笔支出存到一个文本文件里,下次打开程序时再读出来,账目就能持续保存。

使用 FileWriter 写入文本

最简单的写入方式是用 FileWriter。它适合写字符内容,比如一段文字或日志信息。

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

public class WriteDemo {
    public static void main(String[] args) {
        try (FileWriter writer = new FileWriter("note.txt")) {
            writer.write("今天花了25元买早餐\n");
            writer.write("下午充值话费100元");
        } catch (IOException e) {
            System.out.println("写入失败:" + e.getMessage());
        }
    }
}

这段代码会在项目目录下生成一个叫 note.txt 的文件,里面写着两条消费记录。注意用了 try-with-resources,这样即使出错,文件也会自动关闭,避免资源泄露。

用 FileReader 读取内容

写进去之后,自然要能读出来。用 FileReader 可以把文件里的文字原样读取。

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

public class ReadDemo {
    public static void main(String[] args) {
        try (FileReader reader = new FileReader("note.txt")) {
            int ch;
            while ((ch = reader.read()) != -1) {
                System.out.print((char) ch);
            }
        } catch (IOException e) {
            System.out.println("读取失败:" + e.getMessage());
        }
    }
}

这段代码会逐个字符读取文件并打印出来。虽然能工作,但效率不高。更常用的是配合 BufferedReader 按行读取。

按行读写更方便

大多数时候,我们习惯一行一条记录。用 BufferedWriterBufferedReader 能让操作更高效。

import java.io.*;

public class LineIO {
    public static void main(String[] args) {
        // 写入多行
        try (BufferedWriter writer = new BufferedWriter(new FileWriter("tasks.txt"))) {
            writer.write("完成日报");
            writer.newLine();
            writer.write("提交周报");
        } catch (IOException e) {
            e.printStackTrace();
        }

        // 读取多行
        try (BufferedReader reader = new BufferedReader(new FileReader("tasks.txt"))) {
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println("- " + line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

这里用 newLine() 换行,读的时候用 readLine() 一次读一整行,处理日志、配置、列表类数据特别顺手。

二进制文件怎么处理?

上面都是处理文本,如果是图片、音频或者压缩包这类非文本文件,就得用字节流。Java 提供了 FileInputStreamFileOutputStream

import java.io.*;

public class CopyFile {
    public static void main(String[] args) {
        try (FileInputStream in = new FileInputStream("photo.jpg");
             FileOutputStream out = new FileOutputStream("copy.jpg")) {
            
            byte[] buffer = new byte[1024];
            int length;
            while ((length = in.read(buffer)) > 0) {
                out.write(buffer, 0, length);
            }
            
        } catch (IOException e) {
            System.out.println("复制失败:" + e.getMessage());
        }
    }
}

这段代码实现了一个简易的文件复制功能。它把原图按块读取,再写入新文件,适用于任何类型的文件。

掌握这些基本操作后,你就能让程序“记住”数据,不再每次运行都从零开始。无论是保存用户设置,还是生成日志报告,Java 文件读写都是绕不开的基础技能。