Java Datei einlesen - Programm stoppt bei FileReader

Hardliner93

Cadet 3rd Year
Registriert
Mai 2012
Beiträge
59
Hi,
mein Problem ist gar nicht so leicht zu beschreiben. Im Moment bearbeite ich ein ziemlich großes Programm und möchte dort einbauen, dass ich eine Datei einlesen kann und (fürs erste) die Zeilen in nem Vektor gespeichert werden.
Da ich bisher aber nur mit C++ programmiert habe und mit den Feinheiten von Java noch nicht wirklich vertraut bin, hoffe ich, dass jemand von euch mir vielleicht helfen kann:
Code:
Code:
public int ReadFile() throws IOException {
Vector <String> vIn = new Vector <String> (50,20);
Reader in = new FileReader ("test.txt");
BufferedReader br = new BufferedReader(in);
String zeile = br.readLine();
while(zeile!=null)
{
	vIn.add (zeile);
	zeile = br.readLine();
}
in.close();
return vIn.size();

Was evtl noch wichtig ist: nach dem Kompilieren werden die ca. 50 Java-Dateien in eine JAR-Datei gepackt, die dann als Web-applet verwendet wird.

Langsam bin ich am Verzweifeln, weil ich den Fehler nicht finde und nur weiß, dass das Programm in Zeile 3 beim FileReader immer stehenbleibt, ihr seid sozusagen meine letzte Hoffnung! :)
 
Nein, das ist das Problem. Das Programm hat ne GUI, die erscheint, aber alles, was nach dieser Methode noch kommen müsste, kommt nicht mehr. Kein Fehler, nichts. Nur durch schrittweises Auskommentieren habe ich herausgefunden, wo das Problem genau liegt, dass es nicht weitergeht...
 
Ist womöglich der genaue Pfad der Textdatei dafür nötig (z.B. C:\temp\text.txt)?
 
Schwierig sowas zu bestimmen ohne das ganze Programm zu sehen. versuch das mal.
Wenn du mit Eclipse arbeitest, dann sollte die Auszulesende Datei auch wirklich Test.txt heißen und sich im Projekt-Ordner befinden, nicht im src-Ordner.

Bin aber auch kein crack in solchen Sachen ^^


public int ReadFile() throws IOException {
Vector <String> vIn = new Vector <String> (50,20);
try{
Reader in = new FileReader ("test.txt");
BufferedReader br = new BufferedReader(in);
String zeile = br.readLine();
while(zeile!=null)
{
vIn.add (zeile);
zeile = br.readLine();
}
in.close();
return vIn.size();

}

catch ( IOException e ) {
System.out.println("Dateifehler!") ;
e.printStackTrace();
}
 
Ist womöglich der genaue Pfad der Textdatei dafür nötig (z.B. C:\temp\text.txt)?

Hat geklappt! Seit 8 Stunden such ich im Internet, nirgendwo hat jemand den ganzen Pfad verwendet und daran lags!
Vielen Vielen Dank euch!!!!!!
 
Gern geschehen! :)
 
Setze dich lieber trotzdem nochmal an eine Lösung mit relativen Pfaden. Zum Beispiel Verarbeitung einer Datei, die neben dem JAR liegt (welches du dazu natürlich auch noch generieren müsstest). Oder Einlesen einer Datei, die mit im JAR eingebunden ist.

Methodennamen sollte man in Java entsprechend der Konvention übrigens im mixed case (aka lower CamelCase) schreiben.
 
Ja die Datei muss dann auch mit im jar sein soweit ich weiß, weil man sonst keinen Zugriff darauf bekommt (war bei mir zumindest so). Und falls jemand noch einmal dasselbe Problem hat:
Ist womöglich der genaue Pfad der Textdatei dafür nötig (z.B. C:\temp\text.txt)
Das ist insofern nicht ganz korrekt, dass Java den Pfad bei mir nur in der Form (z.B. C:/temp/txt.txt) akzeptiert hat (\t wäre ja dementsprechend wieder ein Tabulator...), deshalb hat das am Anfang auch nicht funktioniert, da beim Kopieren des Pfads aus dem Explorer zum Beispiel der Backslash drin ist.

@Tumbleweed: das mit den relativen Pfaden werde ich mir trotzdem noch ansehen, danke.
 
Wenn die Datei direkt neben dem JAR liegt, kommst du zum Beispiel so dran
Code:
new Scanner(DeineKlasse.class.getClassLoader().getResourceAsStream("text.txt"));

Wenn man sowas wie \t in einem String nicht zu einem Tabulator aufgelöst bekommen möchte, nutzt man Escape-Sequenzen. D.h. du escapest den slash und dann steht da \\t
 
Zuletzt bearbeitet:
Zurück
Oben