gpt4 book ai didi

java - 在 Java 中使用 jimfs 设置文件的最后修改时间戳

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:39:47 25 4
gpt4 key购买 nike

如何使用 jimfs 设置文件的最后修改日期?我有……像这样:

final FileSystem fileSystem = Jimfs.newFileSystem(Configuration.unix());
Path rootPath = Files.createDirectories(fileSystem.getPath("root/path/to/directory"));
Path filePath = rootPath.resolve("test1.pdf");
Path anotherFilePath = rootPath.resolve("test2.pdf");

创建这些东西后,我创建了一个目录迭代器,如下所示:

try (final DirectoryStream<Path> dirStream = Files.newDirectoryStream(rootPath, "*.pdf")) {
final Iterator<Path> pathIterator = dirStream.iterator();
}

之后我遍历文件并读取最后修改的文件,然后返回:

Path resolveLastModified(Iterator<Path> dirStreamIterator){
long lastModified = Long.MIN_VALUE;
File lastModifiedFile = null;
while (dirStreamIterator.hasNext()) {
File file = new File(dirStreamIterator.next().toString());
final long actualLastModified = file.lastModified();
if (actualLastModified > lastModified) {
lastModifiedFile = file;
lastModified = actualLastModified;
}
}
return lastModifiedFile.toPath();
}

问题是文件“test1.pdf”和“test2.pdf”的 lastModified 都为“0”,所以我实际上无法真正测试该行为,因为该方法总是返回目录中的第一个文件。我尝试这样做:

File file = new File(filePath.toString());
file.setLastModified(1);

但该方法返回 false

更新

我刚刚看到 File#getLastModified() 使用默认文件系统。这意味着默认的本地文件系统将用于读取时间戳。这意味着我无法使用 Jimfs 创建临时文件,读取最后修改的内容,然后断言这些文件的路径。一个将 jimfs://作为 uri 方案,另一个将具有依赖于操作系统的方案。

最佳答案

Jimfs 使用 Java 7 文件 API。它并没有真正与旧的 File API 混合,因为 File 对象总是绑定(bind)到默认文件系统。所以不要使用 File

如果您有一个Path,您应该使用java.nio.file.Files 类来进行大部分操作。在这种情况下,你只需要使用

Files.setLastModifiedTime(path, FileTime.fromMillis(millis));

关于java - 在 Java 中使用 jimfs 设置文件的最后修改时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35333498/

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