Java – 创建文件
上次更新:2024 年 8 月 29 日
1. 概述
在本快速教程中,我们将学习如何在 Java 中创建一个新文件 – 首先使用 NIO 中的Files 和 Path 类,然后是 Java File 和 FileOutputStream 类、Google Guava,最后是 Apache Commons IO 库。
本文是 Baeldung 上“Java – Back to Basic”系列的一部分。
2. 设置
在示例中,我们将为文件名定义一个常量
private final String FILE_NAME = "src/test/resources/fileToCreate.txt";
我们还将添加一个清理步骤,以确保在每次测试之前文件不存在,并在每次测试运行后删除它
@AfterEach
@BeforeEach
public void cleanUpFiles() {
File targetFile = new File(FILE_NAME);
targetFile.delete();
}
3. 使用 NIO Files.createFile()
让我们从使用 Java NIO 包中的Files.createFile() 方法开始
@Test
public void givenUsingNio_whenCreatingFile_thenCorrect() throws IOException {
Path newFilePath = Paths.get(FILE_NAME);
Files.createFile(newFilePath);
}
如你所见,代码仍然非常简单;我们现在使用新的Path 接口代替旧的File。
需要注意的是,新的 API 充分利用了异常。如果文件已经存在,我们不再需要检查返回值。相反,我们会得到一个FileAlreadyExistsException
java.nio.file.FileAlreadyExistsException: src/test/resources/fileToCreate.txt at sun.n.f.WindowsException.translateToIOException(WindowsException.java:81)
4. 使用 File.createNewFile()
现在让我们看看我们如何使用java.io.File 类来执行相同的操作:
@Test
public void givenUsingFile_whenCreatingFile_thenCorrect() throws IOException {
File newFile = new File(FILE_NAME);
boolean success = newFile.createNewFile();
assertTrue(success);
}
请注意,该文件必须不存在才能使此操作成功。如果文件确实存在,则createNewFile() 操作将返回 false。
5. 使用 FileOutputStream
创建新文件的另一种方法是使用java.io.FileOutputStream
@Test
public void givenUsingFileOutputStream_whenCreatingFile_thenCorrect() throws IOException {
try(FileOutputStream fileOutputStream = new FileOutputStream(FILE_NAME)){
}
}
在这种情况下,当我们实例化FileOutputStream 对象时会创建一个新文件。如果具有给定名称的文件已经存在,它将被覆盖。但是,如果现有文件是目录或由于任何原因无法创建新文件,那么我们会得到一个FileNotFoundException。
此外,请注意我们使用了try-with-resources 语句 – 以确保流正确关闭。
6. 使用 Guava
Guava 创建新文件的解决方案也是一个快速的单行代码
@Test
public void givenUsingGuava_whenCreatingFile_thenCorrect() throws IOException {
com.google.common.io.Files.touch(new File(FILE_NAME));
}
7. 使用 Apache Commons IO
Apache Commons 库提供了FileUtils.touch() 方法,它实现了与 Linux 中“touch”实用程序相同的行为。
因此,它创建一个新的空文件,甚至在文件系统中创建文件和完整路径。
@Test
public void givenUsingCommonsIo_whenCreatingFile_thenCorrect() throws IOException {
FileUtils.touch(new File(FILE_NAME));
}
请注意,这与之前的示例略有不同:如果文件已经存在,则操作不会失败,它只是什么也不做。
好了,这就是 – 在 Java 中创建新文件的 4 种快速方法。
8. 结论
在本文中,我们探讨了在 Java 中创建文件的不同解决方案。我们使用了 JDK 的类和外部库。
支持本文的代码可在 GitHub 上获取。 一旦你以 Baeldung Pro 会员 身份登录,就开始学习并在项目上进行编码。















