我需要查找目录(以及子目录)中文件的访问、修改和创建日期。我听说你可以使用 basicfileattributes 来获取它们。这是我到目前为止尝试过的:
Path file_dir = Paths.get("F:/");
BasicFileAttributes attrs = Files.readAttributes(file_dir, BasicFileAttributes.class);
System.out.println("Last accessed at:" + attrs.lastAccessTime());
System.out.println("Last modifired at:" + attrs.lastModifiedTime());
System.out.println("Created:" +attrs.creationTime());
我需要在所有文件中找到它们并过滤它们,以便找出哪个文件是在 1 天前或 1 小时前创建的。
最佳答案
给你:
public static void main(String[] args) throws Exception{
//Folder to search
File file = new File("C:\\Caixa");
//Get all files from the folder (including subfolders)
ArrayList<File> allFiles = new ArrayList<>();
listFiles(file, allFiles);
//Filter to use (1 day back from now)
Calendar filter = Calendar.getInstance();
filter.add(Calendar.DAY_OF_MONTH, -1);
//Or 1 hour ago
//filter.add(Calendar.HOUR_OF_DAY, -1);
//List to keep the files found using the filter
List<File> filesFound = new ArrayList<>();
//Search code
for (File fileSearched : allFiles) {
BasicFileAttributes attrs = Files.readAttributes(Paths.get(fileSearched.getAbsolutePath()), BasicFileAttributes.class);
Calendar creationTime = Calendar.getInstance();
creationTime.setTimeInMillis(attrs.creationTime().toMillis());
if(creationTime.after(filter)){
filesFound.add(fileSearched);
}
}
//Listing files searched using the filter
for (File fileFound : filesFound) {
System.out.println("File found: "+fileFound);
}
}
public static void listFiles(File directory, ArrayList<File> files) {
File[] fList = directory.listFiles();
for (File file : fList) {
if (file.isFile()) {
files.add(file);
} else if (file.isDirectory()) {
listFiles(file, files);
}
}
}
更新
如果您想同时按创建时间和修改时间进行搜索,您只需稍微更改一下代码即可:
//Search code
for (File fileSearched : allFiles) {
BasicFileAttributes attrs = Files.readAttributes(Paths.get(fileSearched.getAbsolutePath()), BasicFileAttributes.class);
Calendar creationTime = Calendar.getInstance();
creationTime.setTimeInMillis(attrs.creationTime().toMillis());
Calendar modifiedTime = Calendar.getInstance();
modifiedTime.setTimeInMillis(attrs.lastModifiedTime().toMillis());
if(creationTime.after(filter) || modifiedTime.after(filter)){
filesFound.add(fileSearched);
}
}
关于java - 找出目录中所有文件的创建、访问或修改日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26741381/