File matches nur für Ordnername von 00..99

piro

Aktives Mitglied
Moin zusammen,

ich übe gerade ein wenig mit der Methode matches und irgendwie brauche ich mal einen Denkanstoss.

ich habe folgende Verzeichnisse, von 00 bis 99
C:\\OrdnerMainDerSichNichtAendert\\00
...
C:\\OrdnerMainDerSichNichtAendert\\99
C:\\OrdnerMainDerSichNichtAendert\\AndererOrdner

Wie kann ich jetzt mit matches die Ordner von 00 bis 99 nur zu lassen?

Foldendes habe ich ja schon herausgefunden.
Java:
ordner.matches("\\d\\dd");
Würde nur Zahlen zu lassen. Aber der Pfad des Ordners ist ja mehr als nur 00 oder 99. Wie kann ich den nur den letzten Teil des Ordner Strings verarbeiten?

Danke im Voraus.
Sven
 
S

SlaterB

Gast
.*?\\d{1,2}

kannst du verwenden
oder lieber nach letzten Index von \\ suchen und den Rest in einem SubString betrachten
 

piro

Aktives Mitglied
ich habe es jetzt mal so gemacht aber leider ohne Erfolg.

Java:
files[i].getParent().matches(".*?\\d{1,2}")
Was muss denn da noch anders?
 
S

SlaterB

Gast
was ist denn files.getParent() ?
welcher exakte Inhalt geht nicht?

lieber nur vollständige Testprogramme mit direkten Test-Strings im Quellcode posten,
ob nachher irgendwo in deinem Programm Dateinamen zu Test-Strings passen ist ein simpler equals-Vergleich
 

piro

Aktives Mitglied
Sorry für den fehlenden Code. Es hat doch geklappt. Musste nur getName() verwenden.

Gibt es eine Methode, die das Level der Unterordner angibt? Soll heißen, wenn ich vom Hauptordner im 3. Ordner bin, dass ich die Zahl 3 bekomme?

Danke.
 
S

SlaterB

Gast
fertig gibts das nicht, kannst aber // zählen, indexof-Schleife oder RegEx-find-Schleife
 

piro

Aktives Mitglied
Hier nun mal mein Vorhaben in ausführlicher Form.

Ich habe einen Hauptordner z.B.: C:\MainFolder in diesem gibt es weitere Ordner mit dem Namen 00 bis 99. Es kann aber auch vorkommen, dass andere Ordner wie XX oder abcdef vorkommen, welche ich ignorieren muss. Also nur die Ordner 00 bis 99. In diesen möchte ich dann rekursiv nach vorhandenen Dateien suchen.
In den Ordnern sind ebenfalls Unterordner und wieder Unterordner. Es kann bis zu einer Tiefe von 4 Unterordnern kommen.

Code:
C:\MainFolder
   |-->00
          |-->000
                  |--> Datei 1
                  |--> Datei 2
          |-->001
          |-->002
                  |--> Datei 1
   |-->01
   |-->03
          |-->030
          |-->031
                  |--> Datei 1
                  |--> Datei 2
   |-->...
   |-->99
   |-->Ungtl
   |-->XXX

An diesem Beispiel soll das Programm nur in die Ordner 00 bis 99 und in die jeweiligen Unter- und Unterunterordner schauen und nach Dateien suchen.
Java:
static void baumdurchsuchen(File file) {

		if (file.isDirectory()) {
			File[] sBaum = file.listFiles();
			for (int i = 0; i < sBaum.length; i++) {
				if (sBaum[i].getName().matches("\\d{2}")) { // --> filtern auch nur nach 00 bis 99 geht aber nicht mehr in die Unterordner 
					System.out.println(sBaum[i].getAbsolutePath());
					baumdurchsuchen(sBaum[i]);
				}
			}
		} else {
			System.out.println(file.getAbsolutePath());
		}
	}

Deshalb der Ansatz mit dem Level der Unterordner aber wie oder gibt es noch eine andere Lösung die ich irgendwie nicht sehe?

Danke im Voraus.
Sven
 

piro

Aktives Mitglied
@SlaterB: mit dem Index komme ich glaube nicht weiter, da sich die Methode immer wieder selbst aufruft, wenn es einen Ordner gefunden hat und somit die Schleifen Variable i wieder auf 0 setzt.

Ich glaube ich muss die // zählen. Ist wohl die sicherste Methode.

Wenn aber noch andere Lösungen vorhanden sind, würde ich mich freuen, wenn ihr sie mir mitteilt.

Sven
 
S

SlaterB

Gast
wenn du eine Rekursion hast kannst du mit Tiefe 0 als Parameter anfangen und bei jedem Rekursionsschritt um +1 erhöhen
 

piro

Aktives Mitglied
Das wäre jetzt meine Lösung.
Java:
static void baumdurchsuchen(File file) {

		if (file.isDirectory()) {
			File[] sBaum = file.listFiles();
			for (int i = 0; i < sBaum.length; i++) {

				if (sBaum[i].getAbsolutePath().replaceAll("[^/]", "").length() == 4) { //--> Trenner und Anzahl müssen noch dynamisch gemacht werden auch in Abhängigkeit des Betriebssystem

					if (sBaum[i].getName().matches("\\d{2}")) {
						System.out.println(sBaum[i].getAbsolutePath());
						baumdurchsuchen(sBaum[i]);
					}

				} else {
					System.out.println(sBaum[i].getAbsolutePath());
					baumdurchsuchen(sBaum[i]);
				}
			}
		} else {
			System.out.println(file.getAbsolutePath());
		}
	}

Danke an alle für Ihre Beiträge.

Gute Nacht
 

Mujahiddin

Top Contributor
Arbeite am besten mit java.nio! (Ich hoffe, du hast Java7)

Da kannst du sowas machen:

Java:
static public void main(String args[]) throws Exception {
	final Path start = Paths.get( "C:", "MainFolder" );
	/* start = new File("C:", "MainFolder").toPath(); */
	Files.walkFileTree( start, new SimpleFileVisitor<Path>() {
		
		@Override
		public FileVisitResult visitFile(Path p, BasicFileAttributes attrs) {
			// hier kommt dein Code rein
			return FileVisitResult.CONTINUE;
		}
		
		@Override
		public FileVisitResult preVisitDirectory(Path p, BasicFileAttributes attrs) {
			Path relativized = start.relativize( p ); // wenn (p == C:\MainFolder\Xyz) dann relativized == Xyz
			if( relativized.getNameCount() == 1 && !relativized.toString().matches( "\\d\\d" ) )
				return FileVisitResult.SKIP_SUBTREE;
			return FileVisitResult.CONTINUE;
		}
	} );
}

Es gibt, finde ich, keinen Grund, diese Methoden nicht zu verwenden...
Alles, was du mit java.io.File machen kannst, kannst du genausogut mit Files, Path machen.

Zum Beispiel habe ich eine Sympathie für folgende Methoden entwickelt:
Java:
List<String> list = Files.readAllLines(myPath, Charset.forName("ISO-8859-1") /* oder UTF-8 oder was du eben brauchst */);
Java:
String fileAsString = new String(Files.readAllBytes(myPath), "ISO-8859-1" /* ebenfalls variabel */);
Mit den beiden kannst du so ziemlich alles machen.
Mit
Code:
Files.newXYZ
kannst du auch sehr komfortabel einen traditionellen BufferedReader oder einfach InputStream/OutputStream erzeugen.
Die Methode
Code:
walkFileTree
(wie oben demonstriert) ist, finde ich, das Sahnehäubchen.
Verwende am besten nie mehr
Code:
java.io.File

Nur bei Dateien in Archiven (z.B. in deiner .jar) kommst du mit java.nio leider nicht weiter. Da muss man weiterhin mit URLs arbeiten, oder man entpackt die Ressourcen vorher.
 
Zuletzt bearbeitet:

piro

Aktives Mitglied
@Mujahiddin : Ich habe deinen Rat berücksichtigt und mein Prog angepasst. Dabei ist mir ein kleiner Fehler in deiner Methode aufgefallen. Diese geht nie in die Unterordner, da dass 1. Element das Root- Verzeichnis ist und somit gleich die gesamte Struktur überspringt.

Hier der angepasste Code:
Java:
@Override
	public FileVisitResult preVisitDirectory(Path p, BasicFileAttributes attrs)
			throws IOException {

		Path start = Main.rootPath;
		Path relativized = start.relativize(p); // wenn (p == C:\MainFolder\Xyz)
												// dann relativized == Xyz
		if (!start.equals(p) // --> skip root folder 
				&& relativized.getNameCount() == 1
				&& !relativized.toString().matches("\\d{2}"))
			return FileVisitResult.SKIP_SUBTREE;

		return FileVisitResult.CONTINUE;

	}

Danke an alle für die Erleuchtung.
Sven
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Timo12345 JNLP File mit Java öffnen Java Basics - Anfänger-Themen 2
I Bild richtig speichern / Hochkant im File Explorer, nach Upload vertikal Java Basics - Anfänger-Themen 9
R File.pathSeparator und File.separator Java Basics - Anfänger-Themen 46
KeinJavaFreak Erste Schritte Java "Executable Jar File" nicht vorhanden Java Basics - Anfänger-Themen 1
izoards Prunsrv - Windows Service - .bat file starten Java Basics - Anfänger-Themen 84
I File Uploader... Statusanzeige, Berechnung des Status etc. Java Basics - Anfänger-Themen 0
I H2 Datenbank starten / Daten in File speichern Java Basics - Anfänger-Themen 25
G jar file lässt sich nicht öffnen Java Basics - Anfänger-Themen 1
N Textdatei aus Resourcen-Ordner eines Projekts/ jar-file lesen Java Basics - Anfänger-Themen 4
J File length als Prüfwert für Download Java Basics - Anfänger-Themen 5
berserkerdq2 Überprüfen ob eine Schreibberechtigung auf ein file exisitert bzw. ob man dieses file löschen kann, wie? Java Basics - Anfänger-Themen 9
berserkerdq2 IOstreams, was unterscheidet file von z. B. BufferedWriter? Java Basics - Anfänger-Themen 11
J Datentypen String in File konvertieren funktioniert nicht Java Basics - Anfänger-Themen 4
A java jar-File Java Basics - Anfänger-Themen 1
E Executable jar file fehler Java Basics - Anfänger-Themen 9
I Upload File zu einem Webservice Java Basics - Anfänger-Themen 17
I ZIP File erstellen Java Basics - Anfänger-Themen 10
LeoDerKek Textdatei in JAR-File Java Basics - Anfänger-Themen 4
Tom/S File Java Basics - Anfänger-Themen 10
AleXusher Mehrdimensionales Array aus txt.file auslesen Java Basics - Anfänger-Themen 4
A Checkstyle - File contains tab characters Java Basics - Anfänger-Themen 2
H Java file nicht gefunden Java Basics - Anfänger-Themen 5
C File speichern Java Basics - Anfänger-Themen 5
C Runnable Jar-File erzeugen Java Basics - Anfänger-Themen 14
C Pfad zu Properties-File bei ResourceBundle Java Basics - Anfänger-Themen 7
F GSON file mit einer List erstellen Java Basics - Anfänger-Themen 2
rafi072001 Lesen aus einem Excel File Java Basics - Anfänger-Themen 10
C Bild in executable JAR File mitgeben Java Basics - Anfänger-Themen 5
K File (png) in Image laden Java Basics - Anfänger-Themen 3
B Inputstream in file schreiben? Java Basics - Anfänger-Themen 23
S Input/Output Reader/Writer finden file nicht Java Basics - Anfänger-Themen 3
T Buffered Stream leert Txt File Java Basics - Anfänger-Themen 3
A 2d Arrays aus txt.file einlesen Java Basics - Anfänger-Themen 16
Dimax In Java File (nicht in Java Projekt) mysql Driver importieren Java Basics - Anfänger-Themen 3
K File wird in der .Jar nicht gefunden Java Basics - Anfänger-Themen 3
E TXT FILE EINLESEN Java Basics - Anfänger-Themen 4
Trèfle EXCEL-File Laufwerkunabhängig einbinden. Java Basics - Anfänger-Themen 1
B HTML File einlesen inkl. Bilder? Java Basics - Anfänger-Themen 2
B Hilfe bei InputStream To File Java Basics - Anfänger-Themen 22
topi relativer Pfad in einem Runnable JAR file Java Basics - Anfänger-Themen 12
A jar File kleiner bekommen Java Basics - Anfänger-Themen 3
B File öffnen in src/main/webapp Java Basics - Anfänger-Themen 4
K File-Name Vergleich Java Basics - Anfänger-Themen 2
krgewb Runnable JAR File Export Java Basics - Anfänger-Themen 11
S Maxium aus einer File finden Java Basics - Anfänger-Themen 12
dapzoo Class File Version zu niedrig? Ausführen über Eingabeaufforderung nicht möglich Java Basics - Anfänger-Themen 14
D Input/Output File exists canRead canWrite Java Basics - Anfänger-Themen 11
B cal4j - Error at line 1:Unexpected end of file Java Basics - Anfänger-Themen 0
P jar file lässt sich nicht ausführen Java Basics - Anfänger-Themen 4
E Best Practice Jar-file mit zwei Klassen und externer Bibliothek über Konsole erzeugen Java Basics - Anfänger-Themen 13
M Erste Schritte CSV-File einlesen und Daten verarbeiten Java Basics - Anfänger-Themen 5
F File von Windowsfreigabe laden Java Basics - Anfänger-Themen 1
S java.nio.file.FileSystemException bei Dateizugriff vermeiden Java Basics - Anfänger-Themen 7
Vince42 NIO File Tree in XML umwandeln Java Basics - Anfänger-Themen 10
J Zweidimensionales Array in CSV File exportieren Java Basics - Anfänger-Themen 3
E War-File Problem mit Eclipse Java Basics - Anfänger-Themen 3
B Excel File einlesen und Überschrift prüfen Java Basics - Anfänger-Themen 8
M Email versenden Outlook, attached File, ohne Anmeldung Java Basics - Anfänger-Themen 4
M Input/Output Word File Kopieren Java Basics - Anfänger-Themen 12
K Runable Jar File erstellen Java Basics - Anfänger-Themen 17
T Java Executable jar file funktioniert nicht Java Basics - Anfänger-Themen 4
sourcecorn Werte aus einem File lesen Java Basics - Anfänger-Themen 6
Kopak'rraf Korruptes zip File. Java Basics - Anfänger-Themen 0
T File für Einstellungen wird nicht geladen Java Basics - Anfänger-Themen 1
S Sounddatei in Jar File integrieren Java Basics - Anfänger-Themen 2
S Index File bauen Java Basics - Anfänger-Themen 5
T Anzeige, wie lange es noch dauert bis ein File gesendet ist. Java Basics - Anfänger-Themen 2
T filereader , file aus programm einlesen Java Basics - Anfänger-Themen 12
Ghostman1711 Itext PDF print File gelockt by Java Java Basics - Anfänger-Themen 15
N Email mit Anhang - File not Found Java Basics - Anfänger-Themen 1
K Interface Kein Bild im .jar-File Java Basics - Anfänger-Themen 15
S Bild in Jar-File mit ImageIO Java Basics - Anfänger-Themen 50
Syncopated Pandemonium Compiler-Fehler The constructor MP3File(File) refers to the missing type NoMPEGFramesException Java Basics - Anfänger-Themen 7
S File mit canRead() testen Java Basics - Anfänger-Themen 4
A file.delete funktioniert nicht Java Basics - Anfänger-Themen 15
K Classpath Lesen von Property-File Java Basics - Anfänger-Themen 1
S jar file Java Basics - Anfänger-Themen 19
B Fragen zu ZIP-File Java Basics - Anfänger-Themen 9
B Dateityp von File bekommen Java Basics - Anfänger-Themen 2
I Automatisch Verzeichnis erstellen bei File erstellen Java Basics - Anfänger-Themen 5
E Große Datenmengen effizient in CSV File speichern Java Basics - Anfänger-Themen 4
I String zu File umwandeln Java Basics - Anfänger-Themen 2
N File virtuell ByteStream Java Basics - Anfänger-Themen 11
X Übergabeparameter Konstruktor (File) Java Basics - Anfänger-Themen 13
Anfänger2011 file.isDirectory() liefert falschen Wert!? Java Basics - Anfänger-Themen 1
ms_cikar Jar file mit resource erzuegen Java Basics - Anfänger-Themen 28
E lesen csv file column by column Java Basics - Anfänger-Themen 10
U Anhand von Ant ein War-File erstellen Java Basics - Anfänger-Themen 0
B Quellcode einelsen "line by line" (und abspeichern in file (txt) Java Basics - Anfänger-Themen 7
O Zip-File Inhalt einlesen Java Basics - Anfänger-Themen 3
V Erste Schritte Dateinamen aus einer FIle[] in eine List Java Basics - Anfänger-Themen 11
P Jar File Java Basics - Anfänger-Themen 3
B Probleme bei "Daten in CSV File schreiben". Java Basics - Anfänger-Themen 9
S CSV File - "Vergleichen und Sortieren" Java Basics - Anfänger-Themen 3
T Wieso kann ich das jar file nicht starten? Java Basics - Anfänger-Themen 5
S Resourcen-Dateien im Jar-File verfügbar machen (Intellij 14) Java Basics - Anfänger-Themen 14
A Wieso übergibt der nicht die bearbeitete txt file Java Basics - Anfänger-Themen 8
Ruvok Executable Jar File startet nicht Java Basics - Anfänger-Themen 3
R Ini File erstellen Java Basics - Anfänger-Themen 1
J file.lenght spinnt ab 50mb Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben