Pregunta Android: ¿cómo obtener la fecha de creación de un archivo?


Este es mi código:

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..?
    }
}

51
2018-03-05 19:07


origen


Respuestas:


El archivo la fecha de creación no está disponible, pero puedes obtener el fecha de última modificación:

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

144
2018-03-05 21:50



Así es como 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();
   }
}

22
2017-09-16 08:53



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


19
2018-03-05 19:55



Hay una manera alternativa. Cuando abre el archivo por primera vez, guarde la fecha lastModified, antes de modificar la carpeta.

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

Y luego, cuando cierras el archivo, haz

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

Si ha hecho esto desde que se creó el archivo, tendrá el día creado como la última fecha modificada todo el tiempo.


5
2018-02-07 04:38



Comenzando en API nivel 26, puede hacer esto:

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

3
2018-01-24 20:42



Si bien no puede haber ningún método en la API de la plataforma Android para hacer esto, hay kludges que funcionará en algunos casos. Aquí hay uno: lanzar un cáscara  mando que hacer

ls -gnc filename

De acuerdo con el resultado de ls --usage, el -c option le dice a ls "usar ctime para timestamps". En mi Galaxy J3 (Android 7), produce

-rwxrwx--x 1 1015 7623004 2018-03-28 10:54 filename

de donde puedes extraer la fecha y la hora. Lamentablemente, no tiene control sobre el formato de fecha y no hay información sobre la zona horaria que se utiliza para mostrar. Pero es mejor que nada.

Descargo de responsabilidad: esto no funciona en algunos otros dispositivos Android. P.ej. en un Huawei H30 con Android 4.2.2, ls no toma el -c opción. Peor aún: en un HTC Desire 550 (Android 7.0), el ls comando reclama tomar la opción -c para mostrar ctime, y si ejecuta ls -cl obtendrá un resultado de fecha sin errores. ¡Pero la fecha que se muestra es realmente la última vez de modificación, no la hora de la creación! Por lo tanto, no solo no se admite el tiempo de creación, sino que es difícil descubrir que no es compatible.


0
2018-05-14 18:32