2010-03-05 44 views
50

Este es mi código:Android: ¿Cómo obtener la fecha de creación de un archivo?

File TempFiles = new File(Tempfilepath); 
if (TempFiles.exists()) { 
    String[] child = TempFiles.list(); 
    for (int i = 0; i < child.length; i++) { 
     Log.i("File: " + child[i] + " creation date ?"); 
     // how to get file creation date..? 
    } 
} 
+1

Si querían crear tiempo ACEPTADA por la que modificó el tiempo? http://stackoverflow.com/questions/2723838/determine-file-creation-date-in-java –

Respuesta

141

El archivo fecha de creación no es una disposición, pero se puede conseguir el last-modified date:

File file = new File(filePath); 
Date lastModDate = new Date(file.lastModified()); 
Log.i("File last modified @ : "+ lastModDate.toString()); 
+0

gracias, ¿alguna idea de cómo hacerlo desde un archivo en línea? – In81Vad0

+1

usa el encabezado HTTP de última modificación. –

+3

Como @CommonsWare señala a continuación, la última hora modificada no es la hora de creación. El tiempo de creación no está disponible. – miguel

19

El archivo de la fecha de creación no es una pieza disponible de los datos expuestos por la clase Java File. Te recomiendo que reconsideres lo que estás haciendo y cambies tu plan para que no lo necesites.

+1

Esto está mal. El archivo es compatible con esto, http://developer.android.com/reference/java/io/File.html#lastModified() – Fuzzy

+10

@Fuzzy: esa es la hora de la última modificación. No es la hora de creación del archivo una vez que el archivo ha sido modificado. – CommonsWare

+2

Estás en lo correcto. Disculpas – Fuzzy

21

Así es como yo lo haría

// 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(); 
    } 
} 
+2

+1 Me gusta esta respuesta la mejor. Ejecuté esto en un hilo y funcionó bastante bien. Además, adore el nombre var MAX_FILEAGE: P –

+2

No está respondiendo la pregunta. Esta es la fecha de la última modificación del archivo. – stef

5

Hay una forma alternativa. Cuando abre el archivo por primera vez, guarde la última fecha modificada, antes de modificar la carpeta.

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

Y a continuación, cuando se cierra el archivo hacer

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

Si ha hecho esto desde que se creó el archivo, entonces usted tendrá la CreatedDate como la fecha lastModified todo el tiempo.

2

Comenzando en el nivel API 26, se puede hacer esto:

File file = ...; 
BasicFileAttributes attr = Files.readAttributes(file.toPath(), BasicFileAttributes.class); 
long createdAt = attr.creationTime().toMillis(); 
+0

sí, pero tienen que esperar 3-4 años hasta que los dispositivos con API por debajo de 26 se vuelvan poco utilizados – user924

Cuestiones relacionadas