答案:通过Java的FileWriter和BufferedReader实现图书借还日志记录与读取,使用缓冲流提升效率,结合try-with-resources自动管理资源,完成日志追加、换行及异常处理,适用于小型系统文件操作。

做Java开发时,文件操作是绕不开的基础技能。尤其在小型管理系统中,比如图书借还系统,用IO流记录日志既简单又实用。今天就带你用Java实现一个图书借还日志程序,从零开始讲解IO流的入门应用。
1. 明确需求:图书借还要记什么?
我们要记录每次图书借出和归还的操作,至少包括:
- 操作类型(借书 / 还书)
- 图书名称
- 借阅人姓名
- 操作时间
这些信息可以写入一个文本文件,比如 log.txt,每条记录占一行,便于查看和追加。
2. 使用 FileWriter 和 BufferedWriter 写日志
Java中向文件写数据,常用 FileWriter 配合 BufferedWriter 提升效率。下面是一个记录借书日志的方法示例:
立即学习“Java免费学习笔记(深入)”;
import java.io.*;
import java.time.LocalDateTime;
public class BookLogger {
private static final String LOG_FILE = "log.txt";
public static void logBorrow(String bookName, String borrower) {
try (BufferedWriter writer = new BufferedWriter(new FileWriter(LOG_FILE, true))) {
String log = String.format("[%s] 借书: 《%s》, 借阅人: %s",
LocalDateTime.now(), bookName, borrower);
writer.write(log);
writer.newLine(); // 换行
System.out.println("借阅日志已记录");
} catch (IOException e) {
System.err.println("写入日志失败:" + e.getMessage());
}
}
}
注意点:
- true 参数表示追加模式,不会覆盖原内容
- try-with-resources 自动关闭流,避免资源泄漏
- newLine() 方法跨平台换行,比写 \n 更安全
3. 用 FileReader 和 BufferedReader 查看日志
除了写,我们还需要读取日志进行核对。使用 BufferedReader 逐行读取更高效:
public static void showLogs() {
try (BufferedReader reader = new BufferedReader(new FileReader(LOG_FILE))) {
String line;
System.out.println("=== 借还日志 ===");
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (FileNotFoundException e) {
System.out.println("日志文件不存在,暂无记录。");
} catch (IOException e) {
System.err.println("读取日志失败:" + e.getMessage());
}
}
当文件不存在时会抛出 FileNotFoundException,提前捕获能让提示更友好。
4. 完整小例子:模拟一次借还流程
把上面方法组合起来,做个简单测试:
public static void main(String[] args) {
logBorrow("Java编程思想", "张三");
logBorrow("深入理解JVM", "李四");
logReturn("Java编程思想", "张三"); // 还书方法结构类似
showLogs();
}
运行后你会在项目根目录看到 log.txt,内容类似:
[2025-04-05T10:20:30.123] 借书: 《Java编程思想》, 借阅人: 张三[2025-04-05T10:20:31.456] 借书: 《深入理解JVM》, 借阅人: 李四
[2025-04-05T10:20:32.789] 还书: 《Java编程思想》, 归还人: 张三
基本上就这些。这个小项目帮你掌握了FileWriter、FileReader、缓冲流的使用,也理解了try-with-resources和异常处理的实际意义。不复杂但容易忽略细节,比如追加模式和自动关流。练一遍,IO流就不怕了。










