java - 如何使用 Java 7 Files API 等待操作完成?

标签 java nio

我正在编写一些创建目录的 Java 代码,然后将一些文件放入该目录中。我不关心文件的创建顺序,但是,要成功创建文件,目录需要先退出。

我想使用(新的)java.nio.Files api,因为它有一套非常优雅的方法来处理文件和目录。

虽然 Files 类是非阻塞的很好,但这意味着该目录并不总是存在。是否有一种“正确”的方法来确定 Files.createDirectories(path) 何时完成?

不是特别复杂(这就是我喜欢 Files api 的原因)但这里有一些示例代码:

Files.createDirectories(path);
Files.write(filename1, "some content".getBytes());
Files.write(filename2, "some other content".getBytes());

在上面的 path 中可能是 /tmp/blahfilename1 = /tmp/blah/foofilename2 = /tmp/blah/bar

显然,我可以使用其他一些类或库(如 Commons IO)来完成此操作,但 java.nio.Files 中的构建非常好。

最佳答案

我想你误会了。这些操作实际上是同步的,所以你可以去这里。例如,Files.write 使用 java.io.OutputStream

Some Name 解决了 Linux 的 createDirectory 的可能实现。
在 Windows 上,createDirectory 使用 CreateDirectory WinAPI函数。

WindowsNativeDispatcher.CreateDirectory(var3.getPathForWin32Calls(), var4.address() /* Security descriptor */);

BuffersChannelsSelectors非阻塞

关于java - 如何使用 Java 7 Files API 等待操作完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54736660/

相关文章:

java - 非法参数异常 : No interpolator found for float during implementing Substance LAF

java - Hibernate 标准 API。加入

Java NIO : When to properly switch between OP_WRITE and OP_READ

java - 使用 NIO(解)压缩文件

java - 为什么即使在非阻塞套接字上,SocketChannel 写入也总是完整完成?

java - 关于状态的面向对象编程

java - ORBInitialHost 参数

java - Android 生命周期问题

Java 8 : read files with special characters in name

java - 在 Java 中使用阻塞 NIO