Android: How to get a file's creation date?

后端 未结 6 1632
孤独总比滥情好
孤独总比滥情好 2020-11-28 05:38

This is my code:

File TempFiles = new File(Tempfilepath);
if (TempFiles.exists()) {
    String[] child = TempFiles.list();
    for (int i = 0; i < child.l         


        
相关标签:
6条回答
  • 2020-11-28 05:50

    Having backward compatibility in mind I would rather use the following:

    fun getLastModifiedTimeInMillis(file: File): Long? {
        return try {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                getLastModifiedTimeFromBasicFileAttrs(file)
            } else {
                file.lastModified()
            }
        } catch (x: Exception) {
            x.printStackTrace()
            null
        }
    }
    
    @RequiresApi(Build.VERSION_CODES.O)
    private fun getLastModifiedTimeFromBasicFileAttrs(file: File): Long {
        val basicFileAttributes = Files.readAttributes(
            file.toPath(),
            BasicFileAttributes::class.java
        )
        return basicFileAttributes.creationTime().toMillis()
    }
    

    alternatively, if you are dealing with jpg, jpegs you can use ExifInterface

    0 讨论(0)
  • 2020-11-28 05:57

    There is an alternate way. When you open the file for the first time save the lastModified date, before you modify the folder.

    long createdDate =new File(filePath).lastModified();
    

    And then when you close the file do

    File file =new File(filePath);
    file.setLastModified(createdDate);
    

    If you have done this since the file was created, then you will have the createdDate as the lastModified date all the time.

    0 讨论(0)
  • 2020-11-28 05:58

    The file creation date is not an available, but you can get the last-modified date:

    File file = new File(filePath);
    Date lastModDate = new Date(file.lastModified());
    
    System.out.println("File last modified @ : "+ lastModDate.toString());
    
    0 讨论(0)
  • 2020-11-28 06:03

    Here's how I would do it

    // Used to examplify deletion of files more than 1 month old
    // Note the L that tells the compiler to interpret the number as a Long
    final int MAXFILEAGE = 2678400000L; // 1 month in milliseconds
    
    // Get file handle to the directory. In this case the application files dir
    File dir = new File(getFilesDir().toString());
    
    // Obtain list of files in the directory. 
    // listFiles() returns a list of File objects to each file found.
    File[] files = dir.listFiles();
    
    // Loop through all files
    for (File f : files ) {
    
       // Get the last modified date. Milliseconds since 1970
       Long lastmodified = f.lastModified();
    
       // Do stuff here to deal with the file.. 
       // For instance delete files older than 1 month
       if(lastmodified+MAXFILEAGE<System.currentTimeMillis()) {
          f.delete();
       }
    }
    
    0 讨论(0)
  • 2020-11-28 06:03

    Starting in API level 26, you can do this:

    File file = ...;
    BasicFileAttributes attr = Files.readAttributes(file.toPath(), BasicFileAttributes.class);
    long createdAt = attr.creationTime().toMillis();
    
    0 讨论(0)
  • 2020-11-28 06:05

    The file creation date is not an available piece of data exposed by the Java File class. I recommend you rethink what you are doing and change your plan so you will not need it.

    0 讨论(0)
提交回复
热议问题