gpt4 book ai didi

java - Files.createFile() 可以有异步行为吗?

转载 作者:行者123 更新时间:2023-12-01 06:11:30 25 4
gpt4 key购买 nike

我在使用 Files.createFile() 的测试服务器上遇到了非常奇怪的行为。

代码如下:

Files.createFile(myPath);
... code adding that file to a zip file ...

在 myPath 中创建的文件有时不包含在 zip 内容中,大多数情况下不包含,不会抛出异常。我永远无法在运行 CentOS 版本 6.6(最终版)并具有 ext4 文件系统的测试服务器之外重现该问题。在 createFile 之后执行 Files.exists(myPath) 始终返回 true。

我尝试向文件中写入几个字符以检查是否有影响,但没有。

FileUtils.writeStringToFile(testLog.toFile(), "Test content");

如果我在中间添加一个短暂的 sleep ,该文件就会一致地包含在 zip 中。

持续工作:

Files.createFile(myPath);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
//interrupted
}
... code adding that file to a zip file ...

我对此的看法是,文件系统中发生了一些奇怪的异步行为,因为 Thread.sleep() 永远不会在这段代码中产生任何差异。

有人对 sleep 如何产生影响有明确的解释吗?

编辑:我这里的问题实际上不是关于压缩方法,而是关于 createFile 方法的异步行为,而它不应该这样做。

感谢您的帮助!

最佳答案

为什么不直接使用 zip 文件系统提供程序?

final Path zipPath = Paths.get("pathToZipFileHere");
final URI uri = URI.create("jar:" + zipPath.toUri());

final Path fileInZip;

// Open the zip as a filesystem
try (
final FileSystem fs = FileSystems.newFileSystem(uri,
Collections.emptyMap());
) {
fileInZip = fs.getPath("path/in/zip");
// work with fileInZip
}

关于java - Files.createFile() 可以有异步行为吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33787160/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com