Dateisuche in Linux

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
hi,

mit folgendem code suche ich erfolgreich in windows einen ordner "file".
in linux bleibt das programm aber bei "starte" kleben, zu "bereit" kommt es nie.
es hängt also irgendwie in der funktion "search".
was läuft hier falsch? warum gehts in windows aber linux nicht?

Code:
//...
//start in textbox ausgeben
t.append("Starte...");
File[] drives = File.listRoots();
for(int i = 0; i < drives.length; i++ )
{
        search(drives[i],file);
}
//bereit ausgeben
t.append("Bereit...");
//...
public static void search(File dir,String file)
{
        File[] directories=dir.listFiles();
        for(int ctr=0;ctr<directories.length;ctr++)
        {
                if(directories[ctr].isDirectory())
                {
                        if(directories[ctr].listFiles()!=null)
                                search(directories[ctr],file);
                }
                else
                {
                        if(directories[ctr].getName().equals(file))
                        {
                                directory = directories[ctr].getAbsolutePath();
                        }
                }
        }
}
 

Wildcard

Top Contributor
Mit Linux wirst du vermutlich eine NullPointerException bekommen. Der Grund ist, das du wohl kein Leserecht für root hast und daher null zurückgeliefert wird.
 
G

Guest

Gast
Streue da noch paar Aufrufe von File#canRead() ein. Unter Linux kannst du, je nach dem als was du angemeldet bist,
nicht in jedes Verzeichnis rein. Ansonsten Debuggen und nachschauen, wo es hängen bleibt. Zwischen den zwei Ausgaben
passiert ja recht viel.
 
G

Guest

Gast
auch wenn ich es als root ausführe passiert nichts, denke das dürfte die rechtevergabe umgehen, oder?
wie debugge ich denn?
ich habs in eclipse versucht, aber da kommt immer ne fehlermeldung "source not found".
hab ich mal gegooglt, aber auf ne vernüftige lösung bin ich nicht gekommen.
 

Wildcard

Top Contributor
Ich hab die Sache mal kompilierfähig umgeschrieben und bei mir funktioniert es.
Mach dir ein paar debug System.outs wenn du mit dem Debugger nicht klar kommst.
 
G

Guest

Gast
kannst du mal ein beispiel mit dem debug system.outs geben?
wo setze ich die am besten ein?
 

Wildcard

Top Contributor
Code:
              if(directories[ctr].isDirectory())
                {
                        System.out.println(directories[ctr]);
                        if(directories[ctr].listFiles()!=null)
                                search(directories[ctr],file);
                }
 
G

Gast

Gast
Das Programm fand zwar die Datei, lief aber in Endlosschleife.
Vermutlich bedingt durch das Linux-Dateisystem.
Breche nun die Ausführung nach dem ersten Fund ab, so gehts.
 

fehlerfinder

Bekanntes Mitglied
Anonymous hat gesagt.:
in linux bleibt das programm aber bei "starte" kleben, zu "bereit" kommt es nie.
es hängt also irgendwie in der funktion "search".
was läuft hier falsch? warum gehts in windows aber linux nicht?
Möglicherweise hast du unter Linux in deinem Filesystem einen symbolischen Link, der rekursiv verschachtelt ist. Das würde erklären, warum dein Programm hängen bleibt. Denn wenn eine Exception geschmissen würde, wärst du ja schonmal einen Schritt weiter. Test also erstmal in einem Teilbereich deiner Festplatte, z.B. dein Home-Dir oder ein(!) eigens dafür angelegtes Unterverzeichnis mit einer Datei drin.

Statt:
Code:
File[] drives = File.listRoots();
schreibst du dann etwas in der Art (ist nicht getestet):
Code:
File[] drives;
drives[0] = new File("/home/user/myDir");

Da du unter Linux ohnehin nur EIN Root-Dir hast, kannst du den Aufruf von search() auch noch vereinfachen:
Code:
search(new File("/"), file);
(um zu testen, ob in der Schleife irgendwas schief läuft).

Gast hat gesagt.:
Das Programm fand zwar die Datei, lief aber in Endlosschleife.
Vermutlich bedingt durch das Linux-Dateisystem.
Breche nun die Ausführung nach dem ersten Fund ab, so gehts.
An welcher Stelle war da deine Endlosschleife: in der äußeren for-Schleife oder innerhalb von search? Konkret: welcher Zweig wird da immer wieder durchlaufen?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Input/Output Dateisuche mit NIO Java Basics - Anfänger-Themen 10
M Einstellungen für Dateisuche Java Basics - Anfänger-Themen 4
S DateiSuche - Aufbau der SuFu Java Basics - Anfänger-Themen 2
S JDialog während automatischer Dateisuche einblenden Java Basics - Anfänger-Themen 6
A Rekursive Dateisuche Java Basics - Anfänger-Themen 12
M Wo den Ordner javafx-sdk-21.0.2 unter Linux ablegen? Java Basics - Anfänger-Themen 5
D Jar Datei startet unter Linux nicht Java Basics - Anfänger-Themen 3
OSchriever Jar-Programm läuft auf Windows aber nicht auf Linux(Raspberri Pi4) Java Basics - Anfänger-Themen 22
F Linux Befehle zum Übersetzen Java Basics - Anfänger-Themen 1
L Linux Befehle unter Windows in Eclipse ausführen Java Basics - Anfänger-Themen 3
K Linux Speicherplatz mit Java prüfen Java Basics - Anfänger-Themen 4
F Console command unter Linux Java Basics - Anfänger-Themen 7
U Was bedeutet $@ in der Linux Kommandozeile Java Basics - Anfänger-Themen 3
B Linux - Error: Could not find or load main class application.Main Java Basics - Anfänger-Themen 28
F Wert in Linux auf die Konsole schreiben Java Basics - Anfänger-Themen 3
F Erste Schritte Unter Windows programmieren und dann auf Linux laufen lassen Java Basics - Anfänger-Themen 4
T Linux Mint mit den aktuellsten Java- Versionen Java Basics - Anfänger-Themen 1
S Datei einlesen - Dateipfad unter Linux anpassen Java Basics - Anfänger-Themen 12
W Eclipse auf Linux langsam und stürzt teilweise ab Java Basics - Anfänger-Themen 2
K Parameterübergabe im Terminal(Linux) Java Basics - Anfänger-Themen 8
P windowListener Linux Java Basics - Anfänger-Themen 8
M Fileoutputstream: Linux Dateinamen mit Umlaute Java Basics - Anfänger-Themen 4
A .jar unter Linux nutzen Java Basics - Anfänger-Themen 2
E JDK installieren 64bit Linux - 32bit Java ? Java Basics - Anfänger-Themen 10
B Linux, Dateipfad, Einbindung externer Dateien.. Java Basics - Anfänger-Themen 7
S Classpath Libraries werden unter Linux nicht erkannt Java Basics - Anfänger-Themen 5
K Konsolenprogramm optisch wie top(Linux) Java Basics - Anfänger-Themen 2
T Linux-Kommando absetzen Java Basics - Anfänger-Themen 2
Z [TrayIcon] Transparent unter Linux Java Basics - Anfänger-Themen 10
E Input/Output Linux datei in Windows zeilenweise einlesen Java Basics - Anfänger-Themen 4
B Input/Output Textdatei einlesen Windows / Linux Java Basics - Anfänger-Themen 2
C ASCII CODES in Linux anders als auf Windows? Java Basics - Anfänger-Themen 4
J File unter Linux Java Basics - Anfänger-Themen 8
A (Scheinbar) keine Schreibrechte in Linux Java Basics - Anfänger-Themen 5
-horn- Zeilenweises Speichern bei Win und Linux anders? Wie bitwises Angleichen? Java Basics - Anfänger-Themen 3
I Java Programm unter Linux ausführen Java Basics - Anfänger-Themen 2
J jdbc driver on linux ? Java Basics - Anfänger-Themen 11
S Betriebssystem - Ordner erstellen auf Windows & Linux Java Basics - Anfänger-Themen 3
M Problem mit relativen Pfad unter Linux Java Basics - Anfänger-Themen 5
L Lucene Classpath unter linux setzen Java Basics - Anfänger-Themen 8
M Icons etc. werden unter Linux nicht gefunden Java Basics - Anfänger-Themen 6
I Probleme mit Tomcat / Servlet auf Linux (Debian) Java Basics - Anfänger-Themen 7
R .jar läuft nicht unter Linux Java Basics - Anfänger-Themen 11
C Windows Look and Feel unter Linux Java Basics - Anfänger-Themen 10
A Java Installation/Linux Mint Java Basics - Anfänger-Themen 6
G Logger mag kein Linux Java Basics - Anfänger-Themen 3
J Eine JAR unter Linux starten ... Java Basics - Anfänger-Themen 15
B Einrichtung / Installation unter Linux Java Basics - Anfänger-Themen 4
G Ubuntu LInux: wie kann man den Java.Cache löschen? Java Basics - Anfänger-Themen 11
J scanner problem - linux? Java Basics - Anfänger-Themen 16
B Unterscheidung Windows - Linux, wie? Java Basics - Anfänger-Themen 2
P Mit extra VM starten / Batch-Datei / Unter Linux? Java Basics - Anfänger-Themen 22
B Programm existiert? (Linux) Java Basics - Anfänger-Themen 2
G java version umstellen von 1.4 auf 1.6 unter linux Java Basics - Anfänger-Themen 4
G java unter linux programmieren Java Basics - Anfänger-Themen 8
O Linux - Fehler beim kompilieren - HILFE Java Basics - Anfänger-Themen 4
N Verzeichnis auf genügend Festplattenplatz überprüfen - Linux Java Basics - Anfänger-Themen 15
S Internetseite unter Linux öffnen Java Basics - Anfänger-Themen 2
G Linux Server Steuern mit Java! Java Basics - Anfänger-Themen 5
S classe unter windows kompiliert läuft nicht unter linux? Java Basics - Anfänger-Themen 8
G Problem mit ProcessBuilder und "rm" unter Linux Java Basics - Anfänger-Themen 4
G Programm um auf einem Linux OS eine Konsole zu öffnen ? Java Basics - Anfänger-Themen 9
loadbrain dateirechte unter linux, verzeichniss anlegen lassen Java Basics - Anfänger-Themen 10
S Compilieren&Starten: Unter Windows prima unter Linux Feh Java Basics - Anfänger-Themen 6
T Speichern, Compilieren usw (speziell Linux) Java Basics - Anfänger-Themen 3
J Zugriff auf eine Mysql-DB unter Linux Java Basics - Anfänger-Themen 6
D Probleme mit java.library.path unter linux Java Basics - Anfänger-Themen 4
J j2sdk unter Linux installieren Java Basics - Anfänger-Themen 37
G linux konsolenprogamm schreiben Java Basics - Anfänger-Themen 7
Z linux-befehl Runtime exec Java Basics - Anfänger-Themen 2
T SimpleDateFormat-Problem in Linux-Umgebung Java Basics - Anfänger-Themen 2
L path einlesen und erkennen ob es für windows oder linux ist Java Basics - Anfänger-Themen 8
M Windows Projekt auf Linux Rechner Java Basics - Anfänger-Themen 2
G Problem mit Vector() + Pfadangabe + Linux Java Basics - Anfänger-Themen 8
P Absolute Verzweiflung: Linux + Java + CLASSPATH Java Basics - Anfänger-Themen 8
S java starten unter linux Java Basics - Anfänger-Themen 7
Y Umgebungsvariablen unter Linux Java Basics - Anfänger-Themen 6
P linux program Java Basics - Anfänger-Themen 6
J Linux Pfad setzen Java Basics - Anfänger-Themen 2
M Linux Java Basics - Anfänger-Themen 2
B gcc-Java/Linux Java Basics - Anfänger-Themen 4
I Tomcat unter Suse Linux installieren Java Basics - Anfänger-Themen 35
F Compiler-Fehlermeldung LINUX Java Basics - Anfänger-Themen 9
C Textdatei unter Linux/Solaris auslesen bzw. ändern Java Basics - Anfänger-Themen 2
L Installation von Java unter Linux Java Basics - Anfänger-Themen 7
R beste linux IDE? Java Basics - Anfänger-Themen 4
G JAR-Datei unter Linux Java Basics - Anfänger-Themen 4
K JVM auf Linux geht nicht Java Basics - Anfänger-Themen 6
G SDK 1.4 unter Linux einrichten Java Basics - Anfänger-Themen 13
J Vokabeltrainer unter Linux programmieren Java Basics - Anfänger-Themen 2
M Pfadangabe Windows / Linux Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben