Java文件I / O基础

Java 7引入了java.nio.file包,以提供对文件I / O的全面支持。 除了许多其他功能之外,该软件包还包括Files类(如果您已经使用此类,则可以在这里停止阅读)。
文件包含许多静态方法,可用于在处理文件时完成常见任务。 不幸的是,在我看来,仍然使用旧的(Java 7之前版本)处理文件的方式编写了许多更新的(Java 7+)代码。 这不一定是坏事,但是它会使事情变得比所需的更为复杂。 造成这种情况的可能原因可能是在Java 7发行之前写了许多文章和获得很高评价的Stackoverflow答案。


在本文的其余部分中,我将提供一些代码示例,这些示例说明如何使用Java 7或更高版本完成与文件相关的常见任务。

处理文件

// Create directories
// This will create the "bar" directory in "/foo"
// If "/foo" does not exist, it will be created first
Files.createDirectories(Paths.get("/foo/bar"));

// Copy a file
// This copies the file "/foo/bar.txt" to "/foo/baz.txt"
Files.copy(Paths.get("/foo/bar.txt"), Paths.get("/foo/baz.txt"));

// Move a file
// This moves the file "/foo/bar.txt" to "/foo/baz.txt"
Files.move(Paths.get("/foo/bar.txt"), Paths.get("/foo/baz.txt"));

// Delete a file
Files.delete(Paths.get("/foo/bar.txt"));

// Delete a file but do not fail if the file does not exist
Files.deleteIfExists(Paths.get("/foo/bar.txt"));

// Check if a file exists
boolean exists = Files.exists(Paths.get("/foo/bar.txt"));

大多数文件方法采用一个或多个Path类型的参数。 路径实例代表文件或目录的路径,可以使用Paths.get()获得。 请注意,此处显示的大多数方法还具有一个附加的varargs参数,可用于传递其他选项。

例如:

Files.copy(Paths.get("/foo.txt"), Paths.get("/bar.txt"), StandardCopyOption.REPLACE_EXISTING);

遍历目录中的所有文件

Files.walkFileTree(Paths.get("/foo"), new SimpleFileVisitor<Path>() {
  @Override
  public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
    System.out.println("file: " + file);
    return FileVisitResult.CONTINUE;
  }
});

在这里,/ foo目录中的每个文件都会调用visitFile()方法。 如果您也想跟踪目录,则可以覆盖SimpleFileVisitor的其他方法。

写入和读取文件

// Write lines to file
List<String> lines = Arrays.asList("first", "second", "third");
Files.write(Paths.get("/foo/bar.txt"), lines, Charset.forName("UTF-8"));

// Read lines
List<String> lines = Files.readAllLines(Paths.get("/foo/bar.txt"), Charset.forName("UTF-8"));

所示方法适用于字符。 如果需要使用字节,可以使用类似的方法。

结论

如果您不了解java.nio.file.Files,则一定应该看看Javadoc方法摘要。 里面有很多有用的东西。

翻译自: https://www.javacodegeeks.com/2014/05/java-file-io-basics.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值