¿Alguien tiene un fragmento de Java que puede devolver el archivo más reciente en un directorio (o conocimiento de una biblioteca que simplifica este tipo de cosas)?Java: obtenga el archivo más nuevo en un directorio?
Respuesta
Algo así como:
import java.io.File;
import java.util.Arrays;
import java.util.Comparator;
public class Newest {
public static void main(String[] args) {
File dir = new File("C:\\your\\dir");
File [] files = dir.listFiles();
Arrays.sort(files, new Comparator(){
public int compare(Object o1, Object o2) {
return compare((File)o1, (File)o2);
}
private int compare(File f1, File f2){
long result = f2.lastModified() - f1.lastModified();
if(result > 0){
return 1;
} else if(result < 0){
return -1;
} else {
return 0;
}
}
});
System.out.println(Arrays.asList(files));
}
}
Esto devuelve la última modificación:
public static File lastFileModified(String dir) {
File fl = new File(dir);
File[] files = fl.listFiles(new FileFilter() {
public boolean accept(File file) {
return file.isFile();
}
});
long lastMod = Long.MIN_VALUE;
File choice = null;
for (File file : files) {
if (file.lastModified() > lastMod) {
choice = file;
lastMod = file.lastModified();
}
}
return choice;
}
Recuerde comprobar que listFiles() no devuelve null. –
Esto funciona perfectamente bien para mí:
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.comparator.LastModifiedFileComparator;
import org.apache.commons.io.filefilter.WildcardFileFilter;
...
/* Get the newest file for a specific extension */
public File getTheNewestFile(String filePath, String ext) {
File theNewestFile = null;
File dir = new File(filePath);
FileFilter fileFilter = new WildcardFileFilter("*." + ext);
File[] files = dir.listFiles(fileFilter);
if (files.length > 0) {
/** The newest file comes first **/
Arrays.sort(files, LastModifiedFileComparator.LASTMODIFIED_REVERSE);
theNewestFile = files[0];
}
return theNewestFile;
}
En Java 8:
Path dir = Paths.get("./path/somewhere"); // specify your directory
Optional<Path> lastFilePath = Files.list(dir) // here we get the stream with full directory listing
.filter(f -> !Files.isDirectory(f)) // exclude subdirectories from listing
.max(Comparator.comparingLong(f -> f.toFile().lastModified())); // finally get the last file using simple comparator by lastModified field
if (lastFilePath.isPresent()) // your folder may be empty
{
// do your code here, lastFilePath contains all you need
}
Por favor, no solo descargue su código. Explique su línea de pensamiento para que podamos entender mejor su respuesta. Gracias. – Cthulhu
agregó más comentarios en el código :) – Almaz
¿Qué sucede si la diferencia entre las dos marcas de tiempo modificadas por última vez es mayor que Integer.MAX_VALUE? –
private File getLatestFilefromDir(String dirPath){
File dir = new File(dirPath);
File[] files = dir.listFiles();
if (files == null || files.length == 0) {
return null;
}
File lastModifiedFile = files[0];
for (int i = 1; i < files.length; i++) {
if (lastModifiedFile.lastModified() < files[i].lastModified()) {
lastModifiedFile = files[i];
}
}
return lastModifiedFile;
}
tipos, puede usar este código para obtener el último archivo modificado. –
public File getLastDownloadedFile() {
File choice = null;
try {
File fl = new File("C:/Users/" + System.getProperty("user.name")
+ "/Downloads/");
File[] files = fl.listFiles(new FileFilter() {
public boolean accept(File file) {
return file.isFile();
}
});
Thread.sleep(60000);
long lastMod = Long.MIN_VALUE;
for (File file : files) {
if (file.lastModified() > lastMod) {
choice = file;
lastMod = file.lastModified();
}
}
} catch (Exception e) {
Reporter.log("Exception while getting the last download file :"
+ e.getMessage());
}
log.info("The last downloaded file is " + choice.getPath());
Reporter.log("The last downloaded file is " + choice.getPath(),true);
return choice;
}
- 1. Obtenga el directorio más reciente en bash a las variables
- 2. Script Bash para scp el archivo más nuevo en un directorio en un servidor remoto
- 3. Cómo obtener el archivo más nuevo en un directorio en php
- 4. ¿Cómo encontrar el archivo más nuevo en el directorio usando el script de PowerShell?
- 5. Obtener tamaño de archivo/directorio con Java 7 nuevo IO
- 6. Encontrar el archivo más antiguo (recursivamente) en un directorio
- 7. Servicio de Windows: obtenga el directorio actual
- 8. Obtenga el archivo más reciente basado en la marca de tiempo
- 9. Crear directorio. Si existe, elimine el directorio y su contenido y cree uno nuevo en Java
- 10. Obtenga la última adición de archivos en un directorio
- 11. Cómo crear un nuevo archivo en Qt
- 12. C#: Obtenga los 5 archivos más nuevos (últimos modificados) de un directorio
- 13. Copie el archivo a un directorio diferente
- 14. ¿Es posible escribir un nuevo archivo para agrupar el directorio de recursos en la aplicación iOS?
- 15. Guarde el archivo matplotlib en un directorio
- 16. Crear archivo dentro del nuevo directorio en vim en un solo paso?
- 17. Directorio actual en el archivo de propiedades java
- 18. Maven exec: java: ¿cómo abrir y leer un archivo en el directorio de recursos?
- 19. Escribir en un nuevo directorio en Python sin cambiar de directorio
- 20. ¿Cómo encontrar el archivo en cada directorio con el número más alto como nombre de archivo?
- 21. Generación portátil de un nuevo nombre de archivo en un directorio especificado
- 22. ¿Cómo puedo usar un solo comando para descomprimir todos los archivos en un directorio, en un nuevo directorio único con el mismo nombre que el archivo
- 23. ¿Cómo leo de un archivo en el mismo directorio?
- 24. ¿Hay alguna manera más corta de requerir un archivo en el mismo directorio en ruby?
- 25. Guarde los archivos de SharedPreferences en el directorio personalizado u obtenga el directorio predeterminado de SharedPreferences
- 26. Android Obtenga el Directorio de datos de la aplicación 'Inicio'
- 27. ¿Cómo sondear el directorio para verificar si se agrega un nuevo archivo?
- 28. Obtenga el identificador único de un subproceso en Java 1.4
- 29. Obtenga el VK int de un carácter arbitrario en java
- 30. Typo3 - Obtenga el idioma actual en un archivo php externo
Es una especie de poco firme para forzar un ClassCastException en el caso de no presentar en lugar de, por ejemplo, la afirmación de instanceof. –
No obtendrá un archivo que no sea un archivo de la matriz devuelta por File.listFiles(); – OscarRyz
Derecha. Entonces afirma eso. –