我该如何使用jimfs设置文件的最后修改日期?
我有类似这样的代码:
在创建完所需内容后,我会创建一个目录迭代器,如下所示:
问题在于两个文件 "test1.pdf" 和 "test2.pdf" 的 lastModified 都是 "0",因此我实际上无法测试行为,因为该方法总是返回目录中的第一个文件。我尝试过执行以下操作:
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方案,另一个将具有依赖于操作系统的方案。