È possibile utilizzare un'espressione regolare per ottenere nomi file per i file che corrispondono a un determinato modello in una directory senza dover eseguire manualmente il ciclo di tutti i file.Regex per i file in una directory
risposta
si potrebbe utilizzare 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();
}
});
}
EDIT
Così, per abbinare i file che assomigliano: TXT-20100505-XXXX.trx
dove XXXX
può essere qualsiasi quattro cifre successive, fare qualcosa di simile:
listFilesMatching(new File("/some/path"), "XT-20100505-\\d{4}\\.trx")
implementare FileFilter (solo richiede l'override del metodo
public boolean accept(File f)
allora, ogni volta che si richiede l'elenco dei file, JVM confrontare ciascun file contro il vostro metodo. Regex non può e non deve essere utilizzato come Java è un linguaggio multipiattaforma e che causerebbe implicazioni su sistemi diversi
dubito la validità dell'ultima frase, perché dovrebbe essere? – n002213f
Regex è standard in tutte le versioni di Java, indipendentemente dal sistema operativo, non importa se lo si utilizza. –
per favore dimmi come distinguere tra file e directory su unix e windows con una singola regex? Ho capito che la domanda era "ottenere nomi di file per i file che corrispondono a un determinato pattern". Questo mi ricorda di scrivere Javascript che supporta alcuni browser contemporaneamente ... –
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. Copiare i file da una directory in una directory esistente
- 2. Elenca solo i file in una directory?
- 3. Come attraversare i file in una directory?
- 4. Elimina tutti i file in una directory
- 5. Rimuovere tutti i file in una directory
- 6. Utilizzo di Perl per rinominare i file in una directory
- 7. Script PHP per scorrere tutti i file in una directory?
- 8. Utilizzare Regex/PowerShell per rinominare i file
- 9. Shell: trova i file in un elenco in una directory
- 10. Comando Unix per eliminare tutti i file in una directory ma conservare la directory
- 11. Molti file in una directory?
- 12. RegEx per i prezzi?
- 13. Elenca tutti i file in una directory PHP
- 14. Come eliminare tutti i file in una directory utilizzando batch?
- 15. QMake: Compilazione automatica di tutti i file in una directory
- 16. gmake compila tutti i file in una directory
- 17. WGET solo i nomi file in una directory FTP
- 18. Esegui tutti i file SQL in una directory
- 19. Rinominare i file in una directory UNIX - scripting della shell
- 20. Stampa simultaneamente tutti i file in una directory con gnuplot?
- 21. OutOfMemory quando elencare i file in una directory
- 22. Git - tracciare automaticamente tutti i file in una directory
- 23. fonte tutti i file in una directory da .bash_profile
- 24. Unire tutti i file in una directory, con un separatore
- 25. Come elencare i file in una directory di Android?
- 26. Come eliminare TUTTI I FILE in una directory specificata sull'app?
- 27. Come si generano tutti i file in una directory?
- 28. Eliminazione di tutti i file in una directory con Python
- 29. Iterate su tutti i file in una directory utilizzando BOOST_FOREACH
- 30. ignorare eccezione e continuare & contando i file in una directory
Ho file nel formato TXT-20100505-0000.trx dove * 0000 * stanno cambiando i numeri. TXT-20100525 - * \. Trx non valuta. come potrei ottenere tali file? – n002213f
Digitate in modo errato 'TXT-201005525 -. * \. Trx'? Lo schema che hai scritto corrisponderà a zero o più '-' seguiti da' .trx'. – msw
grazie msw, non avevo digitato male, la mia comprensione è stata ottenere tutti i file con prefisso 'TXT-20100525' seguito da qualsiasi carattere poi' .trx'. Qual è il motivo o la ragione per avere l'extra '.' before' * \\ ' – n002213f