Obtener la última fecha modificada de archivos en un directorio

Tengo problemas para mostrar los archivos modificados.

public class MyAdapter extends ArrayAdapter<String> { String dir = "/FileDirectory/"; File file = new File(Environment.getExternalStorageDirectory() + dir); private final Activity context; Date lastModified = new Date(file.lastModified()); SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); String formattedDateString = formatter.format(lastModified); private String dateFormat = "dd/MM/yyyy HH:mm:ss"; static class ViewHolder { public TextView text; } public MyAdapter(Activity context, String[] date) { super(context, R.layout.row, date); this.context = context; formatter = new SimpleDateFormat(dateFormat); } @Override public View getView(int position, View convertView, ViewGroup parent) { View rowView = convertView; if (rowView == null) { LayoutInflater inflater = context.getLayoutInflater(); rowView = inflater.inflate(R.layout.row, null); ViewHolder viewHolder = new ViewHolder(); viewHolder.text = (TextView) rowView.findViewById(R.id.FilePath); rowView.setTag(viewHolder); } ViewHolder holder = (ViewHolder) rowView.getTag(); String s = formattedDateString; holder.text.setText(s); return rowView; } } 

A partir de ahora sólo muestra la fecha de la última modificación del directorio en todos los archivos. Cualquier ayuda sería muy apreciada!

En su pregunta, usted está señalando un Directorio, no un Archivo.

 File file = new File(Environment.getExternalStorageDirectory() + dir); private final Activity context; Date lastModified = new Date(file.lastModified()); SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); String formattedDateString = formatter.format(lastModified); 

La idea es obtener un directorio e iterar buscando la última fecha modificada de todos los archivos. La siguiente pregunta puede ayudar: ¿Cómo obtener sólo 10 últimos archivos modificados desde el directorio utilizando Java?

EDIT 1:

Mi solución difícil:

 File images = new File("YourDirectoryPath"); long[] fileModifieDate = new long[images.listFiles().length]; int i=0; File[] imagelist = images.listFiles(new FilenameFilter() { public boolean accept(File dir, String name) { File file = new File(dir, name); fileModifieDate[i++] = file.lastModified(); return true; } }); // Here, max is the last modified date for this directory // Here, Long array **fileModifieDate** will give modified time of all files, which you can also access from Files array // if you want the last modified file in the directory you can do this: File[] maxModifiedDate = images.listFiles(new FilenameFilter() { public boolean accept(File dir, String name) { File file = new File(dir, name); return file.lastModified() == max; } }); // Now **maxModifiedDate** File array will have only one File, which will have max modified date. 

EDIT 2:

Para su caso, esto sería útil:

 public class MyAdapter extends ArrayAdapter<String> { String dir = "/FileDirectory/"; File myFolder= new File(Environment.getExternalStorageDirectory() + dir); if(myFolder.exists()){ File[] filelist = myFolder.listFiles(new FilenameFilter() { public boolean accept(File dir, String name) { return true; } }); } 

// Ahora tiene una lista de archivos de archivos. Si desea datos lastModified, puede obtener de cada archivo individual como lo estaba haciendo anteriormente:

  private final Activity context; Date lastModified = new Date(file.lastModified()); SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); String formattedDateString = formatter.format(lastModified); private String dateFormat = "dd/MM/yyyy HH:mm:ss"; 

Código completo para obtener la última fecha de modificación

http://www.technicalkeeda.com/details/how-to-get-file-last-modified-date-in-java

  File file = new File("c:\\test\\myfile.txt"); SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy HH:mm:ss"); System.out.println("Modified Date :- " + sdf.format(file.lastModified())); 

File file = new File(Environment.getExternalStorageDirectory() + dir);

Puntos a directorio, no un archivo.

Si necesita la fecha de modificación de cada archivo por separado en un directorio, sólo use walkfiletree .

Compruebe esto .

Intenté la respuesta de Mohit anónimo, pero comprueba solamente el tamaño de archivo de artículos dentro de la carpeta. Pero, ¿y si hay muchas subcarpetas? Aquí es cómo lo hice.

 public static long lastModifiedDate; public static long getLastModified(String path) { File directory = new File(path); File[] files = directory.listFiles(); if(GlobalValues.DEBUG) Log.i(TAG, "Get last modified date: " + path); if (files.length == 0) return directory.lastModified(); else { for(File filesInFolder: files) { if(filesInFolder.isDirectory()) { getLastModified(filesInFolder.getAbsolutePath()); } else { if(lastModifiedDate == 0) { lastModifiedDate = filesInFolder.lastModified(); } else{ if(filesInFolder.lastModified() >= lastModifiedDate){ lastModifiedDate = filesInFolder.lastModified(); } } } } return lastModifiedDate; } } 
  • Android Chat Para sesión privada para usuarios (Development Workflow)
  • ¿Cómo evitar httpsURLConnection.getInputStream () en Android colgando si se proporcionan credenciales de inicio de sesión incorrectas?
  • Cómo ignorar nuevos campos para un modelo de objeto con Firebase 1.0.2
  • ¿Cuál es la diferencia entre Contexto y Acitividad?
  • Leer un archivo pdf desde la carpeta de activos
  • Mensaje "_Problem Loading Widget"
  • Doble comprobación de bloqueo en Android
  • Error de compilación de Gradle (Android Studio 2.2.2)
  • Observable.empty () hace que java.util.NoSuchElementException: Secuencia no contiene elementos
  • Bucle a través de numerosas variables
  • Cómo solucionar el error de webview
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.