如何创建文件并写入内容(Java):完整指南及示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

在Java中创建文件并写入内容:一劳永逸地搞懂它

\n\n

问题 "How do I create a file and write to it?" 是Stack Overflow上最热门的问题之一。这并不奇怪:文件操作是每位Java开发者必须掌握的基础。但魔鬼,一如既往,藏在细节中。该选哪个类?如何避免数据丢失?如何处理异常?在本文中,我们不仅会给出现成答案,还会解析所有流行方法及其优缺点,让您能自信地在Java中处理文件。

\n\n

我们将探讨 在Java中创建文件并写入内容,从经典的 FileWriter 和 BufferedWriter 到现代的 Files.writeString()。开始吧!

\n\n

1. 经典方法:FileWriter

\n\n

创建文件并写入文本最简单直观的方法是使用 java.io.FileWriter。它专为写入字符流而设计。

\n\n

它是如何工作的?

\n

FileWriter 的构造函数接受文件名(或 File 对象)。如果文件不存在,它会自动创建。如果文件存在,它会被覆盖(除非指定了 append 标志)。

\n\n
import java.io.FileWriter;\nimport java.io.IOException;\n\npublic class FileWriterExample {\n    public static void main(String[] args) {\n        try (FileWriter writer = new FileWriter("example.txt")) {\n            writer.write("你好,世界!这是第一行。\\n");\n            writer.write("这是第二行。");\n            System.out.println("文件已成功创建并写入!");\n        } catch (IOException e) {\n            System.err.println("文件操作出错:" + e.getMessage());\n        }\n    }\n}\n
\n\n

重要提示: 我们使用了 try-with-resources(Java 7+)。这能确保流自动关闭,即使发生异常。忘记关闭 FileWriter 是新手最常见的错误之一。

\n\n

何时使用 FileWriter?

\n
    \n
  • 用于简单写入小型文本文件。
  • \n
  • 当不需要高性能时。
  • \n
  • 用于快速原型开发。
  • \n
\n\n

缺点

\n
    \n
  • 写入大量数据时效率低(每次调用 write() 都可能触发系统调用)。
  • \n
  • 不支持指定编码(使用默认编码,可能在不同平台上引发问题)。
  • \n
\n\n

2. 性能与可靠性:BufferedWriter

\n\n

如果您需要写入大量数据,请使用 BufferedWriter。它包装了 FileWriter 并增加了缓冲功能。数据先累积在缓冲区中,然后一次性写入文件。这能显著加快操作速度。

\n\n
import java.io.BufferedWriter;\nimport java.io.FileWriter;\nimport java.io.IOException;\n\npublic class BufferedWriterExample {\n    public static void main(String[] args) {\n        String[] lines = {"第1行", "第2行", "第3行"};\n\n        try (BufferedWriter writer = new BufferedWriter(new FileWriter("buffered_example.txt"))) {\n            for (String line : lines) {\n                writer.write(line);\n                writer.newLine(); // 添加换行符,与操作系统无关\n            }\n            System.out.println("文件已通过BufferedWriter写入。");\n        } catch (IOException e) {\n            System.err.println("错误:" + e.getMessage());\n        }\n    }\n}\n
\n\n

请注意 newLine() 方法。与 \\n 不同,它使用系统特定的行分隔符,使您的代码具有跨平台性。

\n\n

何时使用 BufferedWriter?

\n
    \n
  • 用于写入大型文本文件。
  • \n
  • 当性能至关重要时
  • \n

博客

书籍推荐