Vas*_*mar 8 java windows filesystems metadata
看,问题是在Java中,我们可以获得lastmodified date filename.lastModified().但在Windows中,正在发生的事情是,无论何时修改文件,只修改该文件的日期和时间,而不是整个文件夹.所以我想知道最后一次使用Java在该文件夹中修改单个文件的时间是什么时候?
找到lastModified()目录文件中的最新(最大),如果没有,请使用目录本身:
public static Date getLastModified(File directory) {
File[] files = directory.listFiles();
if (files.length == 0) return new Date(directory.lastModified());
Arrays.sort(files, new Comparator<File>() {
public int compare(File o1, File o2) {
return new Long(o2.lastModified()).compareTo(o1.lastModified()); //latest 1st
}});
return new Date(files[0].lastModified());
}
Run Code Online (Sandbox Code Playgroud)
仅供参考此代码已经过测试(并且有效).
我编写了一小段代码,它在所有子目录中进行递归搜索并返回最新的修改日期。它会进行深度搜索,因此您可能不想在根目录等上运行它。代码如下(我没有经过严格测试):
private static long getLatestModifiedDate(File dir) {
File[] files = dir.listFiles();
long latestDate = 0;
for (File file : files) {
long fileModifiedDate = file.isDirectory()
? getLatestModifiedDate(file) : file.lastModified();
if (fileModifiedDate > latestDate) {
latestDate = fileModifiedDate;
}
}
return Math.max(latestDate, dir.lastModified());
}
Run Code Online (Sandbox Code Playgroud)
它假设提供的File是一个目录,并且还返回一个long不是Date本身的目录。如果需要(通常不需要),您可以使用 的构造函数long进行转换。DateDate
| 归档时间: |
|
| 查看次数: |
13861 次 |
| 最近记录: |