java-Datei Lesen, aus relativen Pfad in der Projekt-und .jar
Habe ich versucht:
public class FilePath {
public File return_path () {
URL url = getClass().getResource("file.txt");
File file = new File(url.getPath());
return file;
}
}
Wenn ich es drucken, die Ausgabe ist ein Weg, wie diese: "/media/dates/%20uni%c3%a0/Java/project%20java%20201/SearchInFiles/build/classes/searchinfiles/hello.txt"
Ich habe diese Methode, um nicht neu zu definieren, jedes mal den Pfad der Datei, die schließlich ein .jar haben werden zu Lesen.
Könnte es ein problem mit den seltsamen Zeichen?
Btw, wenn ich rufen Sie aus der main-Klasse:
public static void main(String[] args) {
FilePath path = new FilePath();
File file = path.return_path();
System.out.println (file);
try{
BufferedReader input = new BufferedReader(new FileReader(file));
String line;
int i = 0;
while ((line = input.readLine ()) != null)
{
System.out.println(line);
}
input.close();
}
catch(Exception ex){
System.err.println("Error: " + ex.getMessage());
}
}
Habe ich die "Datei nicht vorhanden" - Fehler.
Wie kann ich es lösen?
Dank
- Haben Sie einen Blick auf die ähnlichen Fragen auf der rechten Seite....
- warum nutzen Sie nicht
getClass().getResourceAsStream(fileName)
direkt? - das funktioniert umso besser, vielen Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre urls sind entkommen, dies ist nützlich für die Browser, wo Sie nicht schreiben können Leerzeichen in urls zum Beispiel und bekommen Sie dargestellt als "%20", oder hex 20 oder char 32 in ascii.
Was Sie wollen, ist unescape diese, die folgenden Beitrag kann Ihnen helfen,