简体   繁体   English

找出目录中所有文件的创建或访问或修改日期

[英]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.

相关问题 找出目录中的文件名 - Finding out the names of files in a directory 获取目录中文件的上次修改日期 - Get last Modified Date of Files in a directory 删除目录中除最后 3 个修改过的文件之外的所有文件 - Deleting all but the last 3 modified files in a directory 获取Java中目录中最近7天内修改的所有文件 - Get all files modified in last 7 days in a directory in Java 在特定目录中找到所有.xls文件后,如何在程序中继续? - How continue in the program after finding all the .xls files in a specific directory? java中的“上次访问”vs“最后修改”文件日期(windows) - “last accessed” vs “last modified” file date in java (windows) 如何列出特定目录中所有新创建的文件? - How to list all newly created files in a specific directory? Android内容提供商修改/创建日期 - Android content provider modified / created date Java代码:如何根据目录的修改日期(应等于字符串中指定的日期)从目录中选择文件 - Java Code : How do I select files from a directory based on their date modified which should be equal to the date specified in the string Java-递归查找所有带有两个日期之间的修改日期的扩展名的文件 - Java - recursively find all files with an extension with a modified date between two dates
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM