| 

.NET C# Java Javascript Exception

4
Für ein Java-Programm möchte ich aus einer Textdatei (default.ini), die auf einem Linux-Server abgelegt ist, die Einstellungen auslesen (Properties). Die Textdatei wurde mit dem Editor erstellt. Ich scheitere aber schon beim Öffnen der Datei. Die oben angegebene Fehlermeldung erscheint in meinem Originalprogramm. Hier ist der verwendete Code:

package datei_lesen;
import java.io.File;
public class DateiLesen {
public static void main(String[] args) {
try {
File datei = new File(System.getProperty("user.dir") + "\scr\datei_lesen\default.ini");
// File datei = new File("default.ini");
System.out.println("User-Dir = "+System.getProperty("user.dir"));
System.out.println("Absoluter Pfad = "+datei.getAbsoluteFile());
if (datei.exists()) {
System.out.println(datei.getAbsolutePath()+" = existiert");
} else {
System.out.println(datei.getAbsolutePath()+" = existiert nicht");
}
} catch (Exception e) {
System.out.println(e);
}
}
}
05.11.2011
Braemen 11 1 2
Poste doch -bitte- alle Ausgaben und den Stacktrace (e.printStackTrace();)
LiRo 05.11.2011
1 Antwort
2
Moin Braemen,

das Problem liegt in deiner plattformabhängigen Programmierung.

File datei = new File(System.getProperty("user.dir") + "\scr\datei_lesen\default.ini");


Das Separator Char unter Linux ist nicht "\" sondern "/" :-)

Entsprechend ändere den Code bitte folgendermaßen ab, damit er plattformUNabhängigen ist:

File datei = new File(System.getProperty("user.dir") + File.separator + "scr"+ File.separator + "datei_lesen" + File.separator + "default.ini");


Sieht länger aus, ist es auch. Aber es bietet dir den Charme, das es auf allen Plattformen läuft, auf denen eine JVM verfügbar ist.

Gruß Karl

PS: "\" ist im allgemeinen ein Escape-Zeichen. Gerne genommen ist zu Beispiel

String filename = "c:\temp\meinedatei.txt";


\t ist in diesem Fall aber ein Tab-Zeichen und der Pfad wäre damit ungültig. Wenn schon statisch eingegeben dann

String filename = "c:\\temp\\meinedatei.txt";
05.11.2011
Karl 958 1 8
Karl 958 1 8
Ah! Hatte das gar nicht bemerkt. Schreibe selber nur "/", was auch auf allen(?) Systemen läuft.
LiRo 05.11.2011
Moin LiRo, meistens geht das mit dem "/". Ich meine aber das auch der ":" als Pfadtrenner Verwendung findet. Glaube unter os400
Karl 05.11.2011

Stelle deine Java-Frage jetzt!