[英]finding out the created or accessed or modified date of all files in directory
I need to find the accessed, modified, created date of the files in a directory (in sub directories as well). 我需要在目录(以及子目录)中找到文件的访问,修改,创建日期。 I heard you that you can use basicfileattributes to get them. 我听说您可以使用basicfileattributes来获取它们。 This is what I tried so far: 这是我到目前为止尝试过的:
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());
I need to find them in all files and filter them so I can find out which one was created 1 day ago or 1 hour ago. 我需要在所有文件中找到它们并对其进行过滤,以便可以找出是1天前还是1小时前创建的文件。
here you go: 干得好:
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);
}
}
}
UPDATE UPDATE
If you want to search by BOTH creation AND modification time, all you need to do is change a little the code: 如果要同时进行创建和修改时间进行搜索,则只需更改以下代码即可:
//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);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.