Czy można użyć wyrażenia regularnego, aby uzyskać nazwy plików dla plików pasujących do danego wzorca w katalogu bez konieczności ręcznego przechodzenia przez wszystkie pliki.Regex dla plików w katalogu
Odpowiedz
można użyć 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
Tak, aby dopasować pliki, które wyglądają jak: TXT-20100505-XXXX.trx
gdzie XXXX
może być dowolny cztery kolejne cyfry, zrób coś takiego:
listFilesMatching(new File("/some/path"), "XT-20100505-\\d{4}\\.trx")
wdrożyć FileFilter (tylko wymaga, aby zastąpić metodę
public boolean accept(File f)
następnie, za każdym razem, że będziesz zażądać listy plików, jvm będzie porównać każdy plik na swojej metody. Regex nie może i nie powinien być stosowane jako Java jest cross platform i języków, które powodują skutki w różnych systemach
wątpię ważność ostatniego zdania, dlaczego miałoby to być? – n002213f
Regex jest standardem we wszystkich wersjach Java, niezależnie od systemu operacyjnego, nie ma znaczenia, czy go używasz. –
następnie proszę mi powiedzieć, w jaki sposób można rozróżnić pliki i katalogi w systemie UNIX i Windows za pomocą pojedynczego wyrażenia regularnego? Zrozumiałem, że chodziło o "pobranie nazw plików dla plików pasujących do danego wzorca". To przypomina mi pisanie kodu JavaScript, który obsługuje kilka przeglądarek jednocześnie ... –
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. Znajdź liczbę plików w katalogu
- 2. Regex pasujące nazwy plików
- 3. Określanie liczby plików w katalogu
- 4. ładowanie nowych plików w katalogu
- 5. Lista tylko plików w katalogu?
- 6. Korzystanie regex w komendzie znaleźć dla wielu typów plików
- 7. Przenoszenie plików do katalogu
- 8. Skrypt Bash do wykonania polecenia dla wszystkich plików w katalogu
- 9. Android: Standardy dla prefiksów plików w katalogu RES oprócz ic_?
- 10. Zakończenie bash dla niektórych typów plików w specjalnym katalogu
- 11. Jak odczytywać atrybuty plików w katalogu?
- 12. QMake: Automatyczne kompilowanie wszystkich plików w katalogu
- 13. liczba Liczba plików w katalogu w PHP
- 14. Wiele plików .nuspec w katalogu projektu?
- 15. Apache ProxyPass - Wykluczanie plików Regex
- 16. Ignorowanie plików w katalogu projektu Meteor JS
- 17. Odczytywanie wielu plików z katalogu
- 18. Odczytuj nazwy plików z katalogu
- 19. Jak wyświetlić listę plików w katalogu android?
- 20. ExtractExistingFileAction.OverwriteSilently nie nadpisuje plików w danym katalogu
- 21. Uzyskaj nazwy plików obrazów w katalogu
- 22. Lista plików w katalogu bieżącego pliku JAR
- 23. Lista wszystkich plików w jednym katalogu PHP
- 24. Jak wyświetlić listę plików w katalogu statycznym?
- 25. Jak uzyskać sumę plików w katalogu?
- 26. Jak zmienić rozszerzenie wielu plików w katalogu?
- 27. . Htaccess, odmówić pobierania plików w katalogu
- 28. Rekursywne liczenie plików w katalogu Linux
- 29. Lista tylko numerycznych nazw plików w katalogu
- 30. Lista plików w katalogu przy użyciu html
Mam pliki w formacie TXT-20100505-0000.trx, gdzie * 0000 * zmienia cyfry. TXT-20100525 - * \. Trx nie ocenia. jak dostanę takie pliki? – n002213f
Czy źle wpisałeś 'TXT-201005525 -. * \. Trx'? Wzór, który wpisałeś, będzie pasował zero lub więcej '-', a następnie' .trx'. – msw
dzięki msw, nie pomyliłem się, zrozumiałem, że wszystkie pliki mają przedrostek 'TXT-20100525', a następnie wszelkie znaki, a następnie' .trx'. Co znaczący lub powód posiadania dodatkowego '.' przed' * \\ ' – n002213f