Java kann Dateipfad nicht öffnen

Diskutiere Java kann Dateipfad nicht öffnen im Allgemeine Java-Themen Forum; Sehr geehrtes Forum, ich habe folgendes Problem: Mein Programm benötigt Zugriff (ganz normal mit BufferedReader) auf eine Datei die in einem...

  1. Developer_X
    Developer_X Aktives Mitglied
    Sehr geehrtes Forum,
    ich habe folgendes Problem:
    Mein Programm benötigt Zugriff (ganz normal mit BufferedReader) auf eine
    Datei die in einem Unterordner resources liegt, mit dem Namen "language.dat".

    Also öffne ich die Datei zum Lesen
    Code (Java):
    File f = new File("resources/language.dat");
    BufferedReader br = new BufferedReader(new FileReader(f));
    //...
    Auf meinem PC funktioniert das Programm auch, auch wenn ich es exportiere
    als Jar und irgendwo auf der Festplatte gemeinsam mit Resourcen Ordner ablege.

    Wenn ich nun mein Programm mit den Resourcen an einen Freund sende,
    dann bekommt er die Fehlermeldung, dass das Programm auf folgende Datei zugreifen will,
    die ja dann natürlich nicht existiert :
    resourceslanguage.dat

    Das Programm lässt auf seinem PC einfach die "/" weg.
    Also habe ich recherchiert und herausgefunden, man sollte, um Programme
    plattformunabhängig laufen zu lassen, statt "/" lieber "System.getProperty("file.separator")"
    verwenden.
    Code (Java):
    File f = new File("resources"+System.getProperty("file.separator")+"language.dat");
    BufferedReader br = new BufferedReader(new FileReader(f));
    //...
    Den Code habe ich daraufhin angepasst, aber das Programm macht weiterhin
    denselben Fehler auf seinem PC.

    Was kann ich tun, damit das Programm auch dort fehlerfrei funktioniert?
    Danke sehr für eure Antwort,
    m.f.G.: Developer_X
     
  2. Vielleicht hilft dir dieser Kurs hier weiter --> (hier klicken)
  3. Developer_X
    Developer_X Aktives Mitglied
    Und das verrückteste an allem, wir benutzen beide dasgleiche
    Betriebssystem, Windows 7 64 Bit.

    Das Problem habe ich aber auch schon bei anderen Freuenden erlebt.
     
  4. KeVoZ_
    KeVoZ_ Mitglied
    Und die Java Version?

    EDIT: Wo liegt die Datei denn?
     
  5. Robat
    Robat Bekanntes Mitglied
    Sobald du dein Programm in eine Jar umwandelst ist dein File ein classPathResource.
    D.h. du musst entweder:
    Code (Java):

    this.getClass().getResourceAsStream("PATH/TO/THE/FILE");
     
    oder (falls deine Methode static ist):
    Code (Java):

    className.class.getResourceAsStream("PATH/TO/THE/FILE");
     
    nehmen :)

    Gruß
    Robert
     
    Zuletzt bearbeitet: 24. Nov. 2016
    VfL_Freak gefällt das.
  6. Developer_X
    Developer_X Aktives Mitglied
    Aber die Datei und der Ordner sind extern von der Jar,
    nicht in der Jar drin. Dann muss man doch nicht getResourceAsStream
    verwenden oder nicht?
    Mein Java Programm liegt als Jar in einem Ordner,
    und dazu liegt noch den Order mit den Dateien imselben Verzeichnis.

    Und ohne etwas zu tun funktioniert es an einigen PCs (das habe ich getestet, mit 30 Personen),
    und bei anderen wiederum nicht.

    Java Version bei meinem Freund: Java 8 / 111
     
  7. dennisbauer
    dennisbauer Mitglied
    am einfachsten ist, wenn du, so wie du sagst, die externe Datei außerhalb des Classpath auch als File aufrufst. Ein FileInputStream ginge natürlich auch. Das Problem, dass ich das aktuelle Verzeichnis nicht adressieren konnte hatte ich auch bereits.

    Um das aktuelle Verzeichnis, in dem die JAR ausgeführt wird, herauszufinden, kannst du einfach mithilfe von
    Code (Text):
    System.getProperty("user.dir");
    das aktuelle Verzeichnis ausgeben lassen. Dahinter folgen dann ganz normal deine Dateipfade. Den Seperator kann ich dir anmerken, mit der statischen Variable File.separator geht es einfacher ;)
     
  8. Developer_X
    Developer_X Aktives Mitglied
    Also jetzt kriege ich nur noch Fehlermeldungen...
    Code (Java):
    package main;

    import java.awt.BorderLayout;
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.InputStream;
    import java.io.InputStreamReader;

    import javax.swing.JFrame;
    import javax.swing.JTextArea;

    public class Test
    {
        public static void main(String[]args)
        {      
            JFrame f = new JFrame("Java Datei Lesen Test");
         
            f.setSize(400,600);
            f.setLocationRelativeTo(null);
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         
            f.setLayout(new BorderLayout());
            JTextArea jta = new JTextArea();
            f.add(jta,"Center");
         
            f.setVisible(true);
         
            jta.setText("Aktuelles Verzeichnis : "+System.getProperty("user.dir")+"\n"
                       +"Versuche Datei \""+"folder"+File.separator+"File.txt"+"\" zu öffnen...\n");
         
            try
            {
                InputStream is = Test.class.getResourceAsStream("folder"+File.separator+"File.txt");
             
                BufferedReader br = new BufferedReader(new InputStreamReader(is));
                String line = br.readLine();
                br.close();

                jta.setText(jta.getText()+"Zugriff erfolgreich :)...\nInhalt : "+line);
            }
            catch(Exception e)
            {
                e.printStackTrace();
                jta.setText(jta.getText()+"Hat nicht geklappt...");
            }  
        }
    }
     
    Code (Text):
    java.lang.NullPointerException
        at java.io.Reader.<init>(Unknown Source)
        at java.io.InputStreamReader.<init>(Unknown Source)
        at main.Test.main(Test.java:35)
     
    (Es gibt einen Ordner namens "folder", in dem eine Datei "file.txt" liegt.)
     
  9. dennisbauer
    dennisbauer Mitglied
    Deine Lösung kann aber nur dann funktionieren, wenn dieser ORdner "folder" auch in deinem Classpath also in deiner Jar-Datei drin ist bzw. im Workspace eben unter src/main/resources , ansonsten wird das nicht gehen
     
  10. InfectedBytes
    InfectedBytes Bekanntes Mitglied
    Das kommt auf die IDE an.
     
  11. JStein52
    JStein52 Bekanntes Mitglied
    ich denke gerade verschlimmbesserst du das Ganze. Es geht doch nur darum warum er auf einigen PC's den Separator nicht richtig expandiert !
     
Die Seite wird geladen...

Java kann Dateipfad nicht öffnen - Ähnliche Themen

Kann man mit Java auf einem lokalen PC/Mac Benutzergruppen auslesen und Rechte ändern?
Kann man mit Java auf einem lokalen PC/Mac Benutzergruppen auslesen und Rechte ändern? im Forum Allgemeine Java-Themen
Was kann java?
Was kann java? im Forum Allgemeine Java-Themen
Kann man erzwingen, dass Java 'zu Ende zeichnet'..?
Kann man erzwingen, dass Java 'zu Ende zeichnet'..? im Forum AWT, Swing, JavaFX & SWT
Kann ich Java - Programme auch ohne Editor öffnen?
Kann ich Java - Programme auch ohne Editor öffnen? im Forum Java Basics - Anfänger-Themen
Suche jemanden der kleine kurze JavaScripte schreiben kann
Suche jemanden der kleine kurze JavaScripte schreiben kann im Forum Private Stellangebote und Stellensuche von Usern
Thema: Java kann Dateipfad nicht öffnen