¿Es posible usar una expresión regular para obtener nombres de archivos para archivos que coincidan con un patrón determinado en un directorio sin tener que recorrer manualmente todos los archivos?Regex para archivos en un directorio
Respuesta
Usted podría utilizar File.listFiles(FileFilter)
:.
public static File[] listFilesMatching(File root, String regex) {
if(!root.isDirectory()) {
throw new IllegalArgumentException(root+" is no directory.");
}
final Pattern p = Pattern.compile(regex); // careful: could also throw an exception!
return root.listFiles(new FileFilter(){
@Override
public boolean accept(File file) {
return p.matcher(file.getName()).matches();
}
});
}
EDITAR
Por lo tanto, para que coincida con los archivos que se parecen: TXT-20100505-XXXX.trx
donde XXXX
puede ser cualquier cuatro dígitos sucesivos, hacer algo como esto:
listFilesMatching(new File("/some/path"), "XT-20100505-\\d{4}\\.trx")
aplicar filtros de archivos (sólo requiere que reemplaza el método
public boolean accept(File f)
entonces, cada vez que se le solicita la lista de archivos, JVM comparará cada archivo en contra de su método. Regex no puede y no debe ser utilizado como java es un lenguaje multiplataforma y que provocaría consecuencias en diferentes sistemas
i duda la validez de la última frase, ¿Por qué sería eso? – n002213f
Regex es estándar en todas las versiones de Java, independientemente del sistema operativo, no importa si lo usa. –
, por favor dígame ¿cómo distinguiría entre archivos y directorios en Unix y Windows con una sola expresión regular? Entendí que la pregunta era "obtener nombres de archivos para archivos que coincidan con un patrón determinado". Esto me recuerda escribir JavaScript que admite algunos navegadores a la vez ... –
package regularexpression;
import java.io.File;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegularFile {
public static void main(String[] args) {
new RegularFile();
}
public RegularFile() {
String fileName = null;
boolean bName = false;
int iCount = 0;
File dir = new File("C:/regularfolder");
File[] files = dir.listFiles();
System.out.println("List Of Files ::");
for (File f : files) {
fileName = f.getName();
System.out.println(fileName);
Pattern uName = Pattern.compile(".*l.zip.*");
Matcher mUname = uName.matcher(fileName);
bName = mUname.matches();
if (bName) {
iCount++;
}
}
System.out.println("File Count In Folder ::" + iCount);
}
}
- 1. Muchos archivos en un directorio?
- 2. Copia de archivos desde un directorio en un directorio existente
- 3. ¿Cómo encontrar todos los archivos en un directorio con grep y regex?
- 4. Mover archivos a un directorio
- 5. Usando Perl para renombrar archivos en un directorio
- 6. Script PHP para recorrer todos los archivos en un directorio?
- 7. comando Shell para buscar archivos en un patrón directorio
- 8. comando sed para arreglar nombres de archivos en un directorio
- 9. Leyendo archivos desde un directorio en Scala
- 10. ¿Cómo atravesar los archivos en un directorio?
- 11. Necesito combinar muchos archivos en un directorio
- 12. OutOfMemory cuando lista archivos en un directorio
- 13. Comando Unix para eliminar todos los archivos en un directorio pero conservar el directorio
- 14. Java: viendo un directorio para mover archivos grandes
- 15. ¿Cómo puedo controlar un directorio para los archivos recién cargados?
- 16. Cómo buscar archivos según RegEx en C#
- 17. Comprimir un directorio de archivos con PHP
- 18. Unir todos los archivos en un directorio, con un separador
- 19. Apache ProxyPass - Excluir archivos Regex
- 20. Listado de archivos en un directorio que coincida con un patrón en Java
- 21. Configuración de Apache: Regex para deshabilitar el acceso a archivos/directorios que comienzan con un punto
- 22. Regex para seleccionar todos los archivos .c, excepto los que tienen un cierto prefijo
- 23. ¿Cómo buscar en un directorio de archivos en vim?
- 24. Copiar archivos en la carpeta un directorio en python
- 25. ¿Existe un límite para la cantidad de archivos en un directorio en una tarjeta SD?
- 26. Directorio para almacenar archivos de audio en Android
- 27. vinculando para impulsar expresiones regex en gcc
- 28. ¿Cómo puedo recorrer archivos en un directorio en Perl?
- 29. Listar los archivos en un directorio del archivo JAR actual
- 30. Archivos en el directorio en C++
tengo archivos en el formato TXT-20100505-0000.trx donde * 0000 * están cambiando los números. TXT-20100525 - * \. Trx no evalúa. ¿Cómo obtendría esos archivos? – n002213f
¿Escribiste mal 'TXT-201005525 -. * \. Trx'? El patrón que escribió coincidirá con cero o más '-' seguido de' .trx'. – msw
gracias msw, no había escrito mal, mi entendimiento fue obtener todos los archivos con el prefijo 'TXT-20100525' seguido de cualquier caracter y luego' .trx'. ¿Cuál es el significado o la razón para tener el '.' adicional antes de' * \\ ' – n002213f