Verzeichnisse nach Datei / Ordner durchsuchen

Status
Nicht offen für weitere Antworten.

aminox

Mitglied
Hallo,

ich habe ein kleines Problem. Ich möchte Verzeichnisse und derren Unterverzeichnisse nach Dateien bzw. Ordnern durchsuchen.
Leider wirft mir meine Version gleich NullPointerExceptions....

[highlight=Java]
import java.io.*;

public class FileSearcher {
static String target = "Blubb";
static String dir_path = "c:";
public static void main(String[] args) {

searchFunction(dir_path, target);

}

static private void searchFunction(String dir_path, String target)
{
File mainDir = new File(dir_path);
File files[] = mainDir.listFiles();

for(int i = 0; i < files.length; i++)
{
if(files != null) {
if(files.getName().equalsIgnoreCase(target))
System.out.println("File found on: " + files.getAbsolutePath());

if(files.isDirectory())
searchFunction(files.getAbsolutePath(), target);
}
}
}

}

[/highlight]
 

max40

Bekanntes Mitglied
Die Exception hättest du auch gleich Posten können!
Du bekommst wahrscheinlich die nullpointerexception bei
Code:
for(int i = 0; i < files.length; i++)

Liegt daran das mainDir.listFiles() auch null zurückgeben kann, dies aber nicht von dir berücksichtigt wird!
 

aminox

Mitglied
Exception in thread "main" java.lang.NullPointerException
at FileSearcher.searchFunction(FileSearcher.java:17)
at FileSearcher.searchFunction(FileSearcher.java:25)
at FileSearcher.searchFunction(FileSearcher.java:25)
at FileSearcher.main(FileSearcher.java:8)


Sorry :)

ich schau schnell
 

Hadernlump

Mitglied
In welcher Zeile tritt der Fehler denn auf?

PS: Macht diese Abfrage Sinn? Wenn ich das jetzt auf den ersten Blick richtig verstanden hab kann files nie null sein
[HIGHLIGHT="Java"]if(files != null)[/HIGHLIGHT]
 
M

maki

Gast
Doch, File#listFiles kann auch null zurückgeben.

File (Java 2 Platform SE 5.0))
Returns:
An array of abstract pathnames denoting the files and directories in the directory denoted by this abstract pathname. The array will be empty if the directory is empty. Returns null if this abstract pathname does not denote a directory, or if an I/O error occurs.
 

aminox

Mitglied
Jo mein Fehler war, wie max40 es gesagt hatte.
Es läuft jetzt wunderbar. Jetzt habe ich noch eine Frage. Momentan prüfe ich ja nur auf Namensgleichheit, sei es Datei oder Ordner. Wenn ich jetzt nur bestimmte Dateiformate Fischen will, gab es doch etwas wie den FileFilter ?
 

hdi

Top Contributor
Hab grad so nen kleinen File-Filter gebastelt, falls es dir was nutzt:

[HIGHLIGHT="Java"]
import java.io.File;
import java.io.FileFilter;
import java.util.ArrayList;
import java.util.List;

/**
* An easy FileFilter. You can decide whether you want certain extension to be
* allowed, OR certain extension to be denied.
*
*/

public class MyFilter implements FileFilter {

public enum Extension {

/* add new extensions here */
BMP("bmp"), GIF("gif"), PNG("png"), JPG("jpg");

private String extName;

Extension(String extName) {
this.extName = extName;
}

private String getName() {
return extName;
}
}

private List<Extension> allowed;
private List<Extension> denied;

/**
* Creates a new FileFilter which will, by default, allow all extension.
*/
public MyFilter() {
allowed = new ArrayList<Extension>();
denied = new ArrayList<Extension>();
}

/**
* NOTE: As soon as you add something here all other file extension not
* added as allowed will be denied, no matter what you might have specified
* as denied earlier.
*
* @param e
* the Extension to allow.
* @return this
*/
public MyFilter allow(Extension e) {
denied.clear();
allowed.add(e);
return this;
}

/**
* NOTE: As soon as you add something here all other file extension not
* added as denied will be allowed, no matter what you might have specified
* as allowed earlier.
*
* @param e
* the Extension to deny.
*
* @return this
*/
public MyFilter deny(Extension e) {
allowed.clear();
denied.add(e);
return this;
}

/**
* Resets the filter so that it will accept ALL file extensions.
*/
public void clear() {
allowed.clear();
denied.clear();
}

/**
* @return Whether this file should be accpeted or not.
*/
@Override
public boolean accept(File pathname) {
String fileName = pathname.getAbsolutePath();
String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1);

if (allowed.size() > 0) {
for (Extension a : allowed) {
if (a.getName().equalsIgnoreCase(fileExt)) {
return true;
}
}
return false;
}
if (denied.size() > 0) {
for (Extension d : denied) {
if (d.getName().equalsIgnoreCase(fileExt)) {
return false;
}
}
}
return true;
}
}[/HIGHLIGHT]

[HIGHLIGHT="Java"]public static void main(String[] args) {

MyFilter filter = new MyFilter();
filter.deny(Extension.BMP).deny(Extension.JPG);

// ...
dir.listFiles(filter);
}[/HIGHLIGHT]
 
Zuletzt bearbeitet:

babuschka

Top Contributor
Hallo,
ich suche nach einer bestimmten datei in ordnern und unterordnern. die pfade der datei in allen ordnern soll in EINE liste geschrieben werden. nur bekomm ich das nicht hin. ich weiß das ständig eine neue liste angefangen wird weil ich immer wieder in die methode gehe, aber ich weiß nicht wie ich es anders machen kann. könnt ihr mir helfen??

[highlight=Java]
public ArrayList<XmlFile> searchFile(String filepath)
{

ArrayList<XmlFile> xmlFiles = new ArrayList<XmlFile>();


File maindir = new File(filepath);
File files[] = maindir.listFiles();

for(int i = 0; i < files.length; i++)
{
if(files != null)
{
if(files.isFile() && !files.isHidden())
{
if(files.getName().equals("test.xml"))
{
XmlFile file = new XmlFile();
file.path= files.getAbsolutePath();
xmlFiles.add(file);


}

}

if(files.isDirectory() && !files.isHidden())
{

searchFile(files.getAbsolutePath());
}
}
}

return xmlFiles;


[/highlight]
 
Zuletzt bearbeitet von einem Moderator:
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Verzeichnisse rekursiv nach Dateiduplikaten durchsuchen Java Basics - Anfänger-Themen 5
S Datenbänke und Verzeichnisse Java Basics - Anfänger-Themen 7
I 1) Laufwerke auslesen 2) Verzeichnisse von Laufwerke auslesen Java Basics - Anfänger-Themen 2
F Verzeichnisse und Dateien kopieren Java Basics - Anfänger-Themen 3
Z Verzeichnisse mit Inhalt löschen löschen Java Basics - Anfänger-Themen 7
P Text in Verzeichnisse suchen Java Basics - Anfänger-Themen 4
B Verzeichnisse und Dateien in JAR Files Java Basics - Anfänger-Themen 7
L Verzeichnisse mit Inhalt verschieben auf UNIX Java Basics - Anfänger-Themen 5
H BITTE SCHNELLE HILFE - VERZEICHNISSE DURCHGEHEN Java Basics - Anfänger-Themen 2
M Verzeichnisse rekursiv durchlaufen und dann RegEx Java Basics - Anfänger-Themen 6
T Zugriff auf geschützte Verzeichnisse? Java Basics - Anfänger-Themen 7
M Dateien/Verzeichnisse anlegen Java Basics - Anfänger-Themen 10
D Verzeichnisse durchsuchen Java Basics - Anfänger-Themen 4
J Verzeichnisse auslesen Java Basics - Anfänger-Themen 3
D Verzeichnisse rekursiv durchlaufen Java Basics - Anfänger-Themen 3
DEvent Dialogfenster in dem man Verzeichnisse auswählen kann Java Basics - Anfänger-Themen 6
Z Klassen, Pakete und Verzeichnisse Java Basics - Anfänger-Themen 8
V Jtree: Alle Verzeichnisse und Ordner anzeigen, aber wie? Java Basics - Anfänger-Themen 2
D Map<String, Integer> sortieren und der reinfolge nach die Glieder abfragen Java Basics - Anfänger-Themen 3
S nach Import von jars (PLC4x) in Eclipse kann nicht mehr compiliert werden Java Basics - Anfänger-Themen 9
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
M Queue-Datenstruktur: nach dem Elementen entfernen, das Ergebnis ist immer noch nicht optimal. Java Basics - Anfänger-Themen 3
N Hey Leute und zwar versuche ich gerade ein 2D Spiel zu Programmieren aber die Figur will sich nicht nach links oder rechts bewegen :( Java Basics - Anfänger-Themen 12
H Liste nach String-Länge sortieren Java Basics - Anfänger-Themen 1
I Bild richtig speichern / Hochkant im File Explorer, nach Upload vertikal Java Basics - Anfänger-Themen 9
D Wie kann man in Java nach Arrays auf Duplikate prüfen Java Basics - Anfänger-Themen 12
C Probleme mit Byte konvertieren nach int Java Basics - Anfänger-Themen 10
T sortierung der eingabe nach größe Java Basics - Anfänger-Themen 5
G Bei dynamischer Arrayliste nach jeder Auswahl Zahl entfernen Java Basics - Anfänger-Themen 3
ptcho Werte/Position nach dem Funktionsaufruf tauschen? Java Basics - Anfänger-Themen 1
K Warum wird mir hier nach dem ersten Durchlauf zwei mal "welchen Datentyp wollen sie übergeben?" ausgegeben ? Java Basics - Anfänger-Themen 1
H Cast von Float nach String klappt nicht Java Basics - Anfänger-Themen 12
W LocalDate toString und nach Split falsch "erkannt"? Java Basics - Anfänger-Themen 8
B Array nach Elementwerten sortieren? Java Basics - Anfänger-Themen 1
S Größte Zahl nach Eingabe der Zahl 0 ausgeben Java Basics - Anfänger-Themen 6
I Java Mail Timeout erst nach rund 5 Minuten? Java Basics - Anfänger-Themen 9
FireHorses Einen Command erst nach einer Chateingabe aktivieren Java Basics - Anfänger-Themen 1
izoards Sortier Algorithmus für Bounding Box Elememte Links nach Rechts und von Oben nach Unten Java Basics - Anfänger-Themen 33
Jambolo Karten sortieren nach Rang und Farbe Java Basics - Anfänger-Themen 5
Lion.King Subtraktion nach Eingabe im Terminal Java Basics - Anfänger-Themen 7
D Programmieren nach UML Java Basics - Anfänger-Themen 2
rosima26 Java nach letzter Ziffer sortieren Java Basics - Anfänger-Themen 19
H Kompliziertes Sortieren einer ArrayList mit Objekten(Sortieren nach X und Y) Java Basics - Anfänger-Themen 11
H Erste Schritte Nach einer Zahl n soll n Mal der String untereinander ausgegeben werden Java Basics - Anfänger-Themen 3
volcanos List & ArrayList nach Familiennamen abfragen Java Basics - Anfänger-Themen 57
sserio Wie kann man nach einer Klasse fragen? Java Basics - Anfänger-Themen 12
S Java Client-je nach Heap Size Größe startet Applikation oder nicht Java Basics - Anfänger-Themen 4
A String split funktioniert nicht, wenn mehr als 1 Ziffer vor dem Zeichen steht nach dem er trennen soll? Java Basics - Anfänger-Themen 4
F Suche nach betreuender Person für eine Jahresarbeit der 12. Klasse. Java Basics - Anfänger-Themen 6
F nach Methode Programm nicht beenden Java Basics - Anfänger-Themen 9
E Umlaute und Sonderzeichen werden nach der Build Project nicht richtig angezeigt Java Basics - Anfänger-Themen 2
M Bei nach oben scrollen soll Seite aktualisiert werden (Userscript mit Javascript) Java Basics - Anfänger-Themen 10
K log4j nach log4j2 überführen Java Basics - Anfänger-Themen 0
javapingu Jeglichen Inhalt einer Textdatei nach Zeile n löschen Java Basics - Anfänger-Themen 8
J Nach dem Exportieren funktioniert mein Programm nicht mehr Java Basics - Anfänger-Themen 8
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
B Array nach Wert prüfen rekursiv Java Basics - Anfänger-Themen 5
CptK For-Schleife in Thread nach jedem Durchlauf pausieren Java Basics - Anfänger-Themen 35
D Primzahlen Rechner nach Eratostenes von Kyrene Algorithmus Java Basics - Anfänger-Themen 2
rafi072001 Sortieren einer HashMap nach Values Java Basics - Anfänger-Themen 2
L Zahlungen nach Monat filtern Java Basics - Anfänger-Themen 2
J Jtable Eingabe nach Klick ausserhalb der Tabelle übernehmen Java Basics - Anfänger-Themen 6
I String nach Wort suchen Java Basics - Anfänger-Themen 6
C ArrayList sortieren nach bestimmten Buchstaben in den Wörtern Java Basics - Anfänger-Themen 13
javaluke Erste Schritte Array nach Datentyp sortieren Java Basics - Anfänger-Themen 16
D Methoden nach einer bestimmten Reihenfolge ausführen. Java Basics - Anfänger-Themen 20
idontknow707 Matrix nach z.B. Variable durchsuchen Java Basics - Anfänger-Themen 4
O 2D-Array nach einer Spalte sortieren Java Basics - Anfänger-Themen 22
I Liste gruppieren nach Monat? Java Basics - Anfänger-Themen 5
P Ein Objekt nach einem String durchsuchen? Java Basics - Anfänger-Themen 7
M Nach einer erstmaligen Eingabe, eine zweite Eingabe nur noch gegen bestätigung möglich Java Basics - Anfänger-Themen 2
D Input/Output fehlerhafter Algorithmus zum Ersetzen von Array-Werten nach logischem Schema Java Basics - Anfänger-Themen 1
C Meldung einer Klasse nach "oben" Java Basics - Anfänger-Themen 6
B Nach eingefügtem Code erkennt Compiler keine Instanzvar und meldet SyntaxError Java Basics - Anfänger-Themen 2
newcomerJava Nach doppelter Zahl eine Ausgabe Java Basics - Anfänger-Themen 10
M Anzahl Schleifendurchgänge nach x Sekunden anzeigen Java Basics - Anfänger-Themen 2
C Lotto 3, 4, 5, 6 Richtige nach x Ziehungen ermittelt.. Java Basics - Anfänger-Themen 7
G Primzahlen von Rekursiv nach Iterativ Java Basics - Anfänger-Themen 6
F JMenuItem Kann nicht nach einem String benannt werden... Java Basics - Anfänger-Themen 11
R JDK installieren Durcheinander nach installation von SE 14.02 Java Basics - Anfänger-Themen 6
P Sortieren von Listen nach Attributen Java Basics - Anfänger-Themen 3
B DateTimeFormatter nach LocalDateTime, wenn dd.MM.yyyy oder dd.MM.yyyy mm:hh Java Basics - Anfänger-Themen 5
1 main-Methode erweitern, Nachfrage nach wiedeholung Java Basics - Anfänger-Themen 2
G unklares Verhalten nach Instanzierung neuer Klasse Java Basics - Anfänger-Themen 3
S Wohin kommt das „abstract“? Vor oder nach „public“/ „private“ /... Java Basics - Anfänger-Themen 3
S Datenbank Befehl nach Login Java Basics - Anfänger-Themen 5
N Operatoren Schreibtischtest der Reihen-Suche nach Aufschluss in die Basics Java Basics - Anfänger-Themen 1
B Umstieg von C# nach Java Java Basics - Anfänger-Themen 18
Ellachen55 Wie nach häufigste Werte im Array suchen? Java Basics - Anfänger-Themen 2
M Untersuchen ob ein Graph nach entfernen einer Kante immer noch zusammenhängend ist Java Basics - Anfänger-Themen 70
N Wörter und Zahlen nach speziellen Wörtern ausgeben Java Basics - Anfänger-Themen 11
M Werte ändern sich nicht mehr nach Reset Java Basics - Anfänger-Themen 14
B Nach dem kompilieren werden Bilder nicht mehr gefunden Java Basics - Anfänger-Themen 10
X Nach einem Bruch testen ob es eine ganze Zahl ist Java Basics - Anfänger-Themen 6
B String nach erstem Leerzeichen trennen Java Basics - Anfänger-Themen 7
N Speichern von Werten in Variablen nach Schließen des Programms Java Basics - Anfänger-Themen 3
G String wird nach Einlesen aus Datei nicht erkannt Java Basics - Anfänger-Themen 3
CptK Best Practice Algorithmus nach jedem Schritt zum Visualisieren pausieren Java Basics - Anfänger-Themen 3
O zwei Arrays nach Werten durchsuchen und zusammenfügen Java Basics - Anfänger-Themen 3
M Double Wert nach n abschneiden ohne zu runden Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben