Java soll Datei auf rechner Finden

Status
Nicht offen für weitere Antworten.

cybmaster

Neues Mitglied
Problem ist das ich nie genau weiß in welchem Pfad windows eine datei deren namen ich kenne speichert. Es sollte ja nun ohne größere probleme möglich sein nach einem spezifischen dateinamen zu suchen, oder? Zumal ich schon richtige "suchen masken" gesehen habe die ich aber ja garnicht brauche....

kann mir irgendjemand helfen????
 
Der JFileChooser ist eine Klasse, mit der der Benutzer einen Dialog sieht, wo er direkt eine Datei auswählen, bzw. Erstellen kann, ähnlich wie bei Texteditoren oder Microsoft Word.
In den Java API Docs steht da mehr darüber.
Er braucht das Package javax.swing, aber dann funktioniert er.
Du musst zuerst ein Objekt des Typs JFileChooser erstellen. Am besten, z.B., einfach
Code:
JFileChooser JFC = new JFileChooser(); //Ohne Startverzeichnisspezifikation
oder
Code:
JFileChooser JFC = new JFileChooser(getCodeBase()); //Müsste im Klassenverzeichnis starten.
So ganz genau weiß ich das jetzt leider auch nicht. Mit Filtern und so kenn ich mich da auch nicht aus. Da müsstest du selber schaun. Jedenfalls kann man dann den Dialog über
Code:
JFC.showOpenDialog(this);
oder
Code:
JFC.showSaveDialog(this);
anzeigen, und die Datei kann man dann z.B. über
Code:
JFC.getSelectedFile();
auslesen, wobei diese Funktion ein Objekt des Typs
Code:
File
zurückgeben sollte. Damit kann man dann weiterarbeiten.
Ich hoffe, das hat weitergeholfen.
 
Du möchtest rekursiv in einem Ordner und seinen Unterordnern nach Dateien eines Namens suchen? Bitteschön:
Code:
public class FileFinder {

	final FileFilter fileFilter;
	final static FileFilter directoryFilter = new FileFilter() {
		public boolean accept(File file) {
			return file.isDirectory();
		}
	};

	public FileFinder(final String fileNameMask) {
		fileFilter = new FileFilter() {
			public boolean accept(File file) {
				return file.isFile() && file.getName().matches(fileNameMask);
			}
		};
	}

	public Set findFile(File directory) {
		Set files = new HashSet();
		findFile(files, directory);
		return files;
	}

	public void findFile(Set foundFiles, File directory) {
		/* Search for files */
		File[] files = directory.listFiles(fileFilter);
		if (files.length > 0) {
			foundFiles.addAll(Arrays.asList(files));
		}

		/* Get the sub directories */
		File[] subDirs = directory.listFiles(directoryFilter);
		for (int dirIndex = 0; dirIndex < subDirs.length; dirIndex++) {
			findFile(foundFiles, subDirs[dirIndex]);
		}
	}

	public static void main(String[] args) {
		System.out.println(new FileFinder(".*\\.ini").findFile(new File("C:\\WINNT")));
	}
}

Wenn Du wirklich nur den ersten Treffer suchst, dann solltest Du's natürlich anpassen. Aber es funktioniert so!

@Shoppenhauer: Ich glaube er will automatisch suchen lassen :wink:

Es grüßt Ebenius
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben