行业资讯 2025年08月6日
0 收藏 0 点赞 502 浏览 2372 个字
摘要 :

文章目录 1.使用Java NIO创建新文件 例子1:创建一个新的可写文件。 例子2:创建一个新的只读文件。 2.使用File.createNewFile() 3.使用FileOutputStream 4.Guava的Fi……




  • 1.使用Java NIO创建文件
    • 例子1:创建一个新的可写文件。
    • 例子2:创建一个新的只读文件。
  • 2.使用File.createNewFile()
  • 3.使用FileOutputStream
  • 4.Guava的Files.touch()
  • 5.Apache Commons IO的FileUtils.touch()

在Java中创建新文件可以使用不同的技术,包括NIO Path、IO File、OutputStream,以及开源库,如Guava和Apache Commons。还有关于创建临时文件和将文件设置为只读的单独文章。

1.使用Java NIO创建新文件

使用Files.createFile(path, attribs)是在Java中创建新的、空的可写文件的最佳方式,如果您尚未使用它,将来应该成为您的首选方法。

  • createFile()方法接受Path接口而不是File,它检查文件是否已经存在,然后创建文件。
  • 检查现有文件并创建文件是一个原子操作。
  • attribs是一个可选的文件属性列表,用于在创建文件时进行原子设置。
  • 如果同名文件已经存在,它将返回FileAlreadyExistsException
  • 如果发生I/O错误或父目录不存在,它将返回IOException

例子1:创建一个新的可写文件。

String TEXT_FILE = \"C:/temp/io/textFile.txt\";
Path textFilePath = Paths.get(TEXT_FILE);
Files.createFile(textFilePath);

例子2:创建一个新的只读文件。

String TEXT_FILE = \"C:/temp/io/textFile.txt\";
Set<PosixFilePermission> permissions = PosixFilePermissions
  .fromString(\"r--r--r--\");
FileAttribute<Set<PosixFilePermission>> attribs = PosixFilePermissions
  .asFileAttribute(permissions);
Path textFilePath = Paths.get(TEXT_FILE);
Files.createFile(textFilePath, attribs);

还可以在创建文件时设置文件属性。在给定的示例中,我们使用字符串“r–r–r–”为所有者、组和其他用户设置只读(“r”)访问权限。

2.使用File.createNewFile()

使用File.createNewFile()方法可以创建新文件,前提是该文件名尚不存在。检查现有文件并创建文件是一个原子操作。

此方法返回一个布尔值:

  • 如果文件成功创建,返回true
  • 如果文件已经存在,返回false
  • 如果发生I/O错误,将抛出IOException
String TEXT_FILE = \"C:/temp/io/textFile.txt\";
File textFile = new File(TEXT_FILE);
boolean isFileCreated = textFile.createNewFile();

3.使用FileOutputStream

构造函数会自动在指定位置创建一个新文件。请注意,如果具有相同名称的文件已经存在,它将被覆盖。

如果给定的文件路径表示一个目录,或者由于任何原因无法创建新文件,它将抛出FileNotFoundException

String TEXT_FILE = \"C:/temp/io/textFile.txt\";
try(FileOutputStream fos = new FileOutputStream(TEXT_FILE)){
  // We can write data as byte[]
  // fos.write(data, 0, data.length);
}

4.Guava的Files.touch()

要使用Guava,需要将以下内容添加到pom.xml中。

pom.xml<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>31.1-jre</version>
</dependency>

Files.touch()方法类似于Unix的touch命令。它创建一个空文件或更新最后更新的时间戳。

当不带任何选项使用touch命令时,它假定文件不存在时创建一个空文件。如果文件已存在,则更改时间戳。

String TEXT_FILE = \"C:/temp/io/textFile.txt\";
com.google.common.io.Files.touch(new File(TEXT_FILE));

5.Apache Commons IO的FileUtils.touch()

要使用Apache Commons IO,需要将以下内容添加到pom.xml中。

pom.xml<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.11.0</version>
</dependency>

FileUtils.touch()与前面的示例非常相似。它也实现了Unix上“touch”实用程序的相同行为。

此方法还会在v1.3版本后创建父目录(如果不存在)。如果文件的最后修改日期无法设置,它将抛出IOException

String TEXT_FILE = \"C:/temp/io/textFile.txt\";
org.apache.commons.io.FileUtils.touch(new File(TEXT_FILE));

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/9460.html

管理员

相关推荐
2025-08-06

文章目录 一、Reader 接口概述 1.1 什么是 Reader 接口? 1.2 Reader 与 InputStream 的区别 1.3 …

988
2025-08-06

文章目录 一、事件溯源 (一)核心概念 (二)Kafka与Golang的优势 (三)完整代码实现 二、命令…

465
2025-08-06

文章目录 一、证明GC期间执行native函数的线程仍在运行 二、native线程操作Java对象的影响及处理方…

348
2025-08-06

文章目录 一、事务基础概念 二、MyBatis事务管理机制 (一)JDBC原生事务管理(JdbcTransaction)…

456
2025-08-06

文章目录 一、SnowFlake算法核心原理 二、SnowFlake算法工作流程详解 三、SnowFlake算法的Java代码…

517
2025-08-06

文章目录 一、本地Jar包的加载操作 二、本地Class的加载方法 三、远程Jar包的加载方式 你知道Groo…

832
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号