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!
- ¿Qué es mejor utilizar, array de hardcoded o array de cadena de recursos?
- Cómo deshabilitar el elemento ListView después de que se ha hecho clic?
- Cómo realizar varias operaciones con JSch
- Android Studio. Un error
- Lectura de un archivo de texto mediante InputStream
- Android: Guardar el objeto android.net.Uri en la base de datos
- No se puede tomar la captura de pantalla en android utilizando robotium y método privado
- Interceptación de clics desde subview en Android
- Práctica recomendada para gestionar la llamada de error HTTP
- ¿Cómo encontrar el nombre del país desde el nombre de la ciudad en Java?
- Java.lang.NoSuchMethodError: Ningún método virtual keySet ()
- RxJava comparte las emisiones de un Observable entre múltiples suscriptores
- Butterknife 8.4.0 no encuentra vistas después de volver a ejecutar la aplicación. Obtiene una excepción NullPointerException
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; } }
- Cómo mostrar SlidingPaneLayout en el lado derecho
- ¿Existe algún otro módulo de pago que no sea Paypal?