Ich versuche, eine Datei außerhalb meines aktuellen Arbeitsverzeichnisses zu lesen, indem ich die Klassen File
und URL
in Java verwende. Ich weiß, dass das aktuelle Arbeitsverzeichnis standardmäßig durch eine .
'repräsentiert' wird.So erhalten Sie den absoluten Pfad der Dateien außerhalb des aktuellen Arbeitsverzeichnisses [java]
meine Java-Klasse Unter der Annahme ist unter /folders/Desktop/MyClass.java
, wenn ich eine Datei file1.txt
in /folders/Desktop/file1.txt
lesen will, kann ich folgendes tun:
URL url = getClass().getResource("./file1.txt"); /* or "./anotherFolder/../file1.txt", or simply "file1.txt"*/
File f = new File(url.getPath());
und alles funktioniert wie erwartet.
Aber was soll ich tun, um eine Datei zu lesen, die sich nicht im aktuellen Arbeitsverzeichnis befindet und sich nicht in einem Unterverzeichnis davon befindet? Zum Beispiel, wenn der Pfad der Datei /folders/file1.txt
ist? Ich habe überall gesucht, kann aber nichts finden. Ich habe versucht ../file1.txt
, ./../file1.txt
und andere, aber nichts funktioniert. Vielleicht habe ich etwas verpasst oder vielleicht habe ich nicht an den richtigen Stellen gesucht.
Was ist falsch mit der neuen Datei ("/ folders/file1.txt")? – Turo
Es ist nichts falsch mit dieser Anweisung, es funktioniert in meinem Fall. Das Problem tritt auf, wenn ich Dateien lesen möchte, die nicht in Unterverzeichnissen des aktuellen Arbeitsverzeichnisses sind. Insbesondere wird eine java.lang.NullPointerException ausgelöst, wenn ich versuche, eine Instanz der File-Klasse zu erstellen. – Process0
Ich meine, verwende keine Ressource, nur neue Datei (Dateiname). Die Datei kann beliebig sein, solange der Pfad korrekt ist. Wie kann NPE geworfen werden, wenn der Dateiname nicht null ist? – Turo