Probleme beim Einlesen eines Files

NiciB

Erfahrenes Mitglied
Ich schreibe gerade ein kleines Java Programm in Eclipse wo ich eine Datei einlesen muss. Leider bekomme ich folgende Fehlermeldung:

Code:
Exception in thread "main" java.io.FileNotFoundException: (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at FahrzeugFileReader.<init>(FahrzeugFileReader.java:17)
at TestFuhrparkVerwaltung.main(TestFuhrparkVerwaltung.java:12)

Die Datei befindet sich im selben Ordner sie die class-Files... Ich hab auch schon versucht den absoluten und den relativen Pfad anzugeben.

Wie könnte ich dieses Problem lösen, oder wie könnte ich auf den Fehler kommen?

Danke.
 
Hallo!

unter Eclipse reicht es resourcen in das SRC Verzeichnis zu legen. Alle Resourcen aus dem src Verzeichnis werden auch automatisch im bin Verzeichnis zur Verfügung gestellt.
Wie liest du denn die Datei ein? Zeig mal den Codeabschnitt.

Gruß Tom
 
also in der ausführbaren Methode (Klasse: TestFuhrparkVerwaltung) steht folgendes Codestück:
(ich übergebe den Pfad als Argument)

Code:
import java.io.*;

public class TestFuhrparkVerwaltung {


	public static void main(String[] args) throws FileNotFoundException{
        String datei=args[0];
        FahrzeugFileReader fr = new FahrzeugFileReader(datei);
	}

}


In der Klasse "FahrzeugFileReader" steht folgendes:

Code:
import java.io.*;

public class FahrzeugFileReader {
		
	String file ="";
	FahrzeugFileReader(String filename) throws FileNotFoundException {
		file=filename;
	}
	
	BufferedReader br = new BufferedReader(
			   new InputStreamReader(
			   new FileInputStream(file)));
}
 
Zuletzt bearbeitet:
Hallo!

Wenn die Datei im Classpath liegt kannst du beispielsweise so darauf zugreifen:
Java:
/**
 * 
 */
package de.tutorials;

import java.io.BufferedReader;
import java.io.InputStreamReader;

/**
 * @author Tom
 * 
 */
public class ClassPathResourceExample {

    /**
     * @param args
     */
    public static void main(String[] args) throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(
                ClassPathResourceExample.class.getClassLoader()
                        .getResourceAsStream("data.txt")));
        
        System.out.println(br.readLine());
        
        br.close();
    }
}

Gruß Tom
 
jetzt funktioniert das mit der Datei... ich hab den BufferedReader in den Konstruktor reingeschrieben:

Code:
import java.io.*;

public class FahrzeugFileReader {
	BufferedReader br;	
	String file ="";
	
	FahrzeugFileReader(String filename) throws FileNotFoundException {
		file=filename;
		BufferedReader br = new BufferedReader(
				   new InputStreamReader(
				   new FileInputStream(file)));
	}
	
	public void read2(){
			System.out.println("Test: "+br.readLine());          // LINE 20
			
	}

Code:
import java.io.*;

public class TestFuhrparkVerwaltung {

	public static void main(String[] args) throws Exception{
		
		Fahrzeug neu=new Fahrzeug();
		
		String datei=args[0];
	
		FahrzeugFileReader fr = new FahrzeugFileReader(datei);

		fr.read2();       // LINE 14
	}

}

aber jetzt kommt folgende Meldung:
Exception in thread "main" java.lang.NullPointerException
at FahrzeugFileReader.read2(FahrzeugFileReader.java:20)
at TestFuhrparkVerwaltung.main(TestFuhrparkVerwaltung.java:14)

Welches Line 14+20 sind, ist im Code kommentiert...
Ich glaub ich steh heute total auf der Seife, bitte um Hilfe!
 
Hallo Nicib,

die erläuterungen stehen im Quelltext:

Java:
import java.io.*;

public class FahrzeugFileReader {
	BufferedReader br;

	String file = "";

	FahrzeugFileReader(String filename) throws FileNotFoundException {
		file = filename;
		
		br = new BufferedReader(new InputStreamReader(
				new FileInputStream(file)));
		
		// Das ist falsch, denn du hast oben eine Klassenvariable BufferedReader
		// Hier tust du zwar ein BufferedReader erzeugen, aber mit einer neuen Methoden
		// Variable referenzieren. Dieses untere br ist nur hier im Konstruktor sichtbar
		//BufferedReader br = new BufferedReader(new InputStreamReader(
		//		new FileInputStream(file)));
	}

	public void read2() {
		// Das br hier bezieht sich auf die Klassenvariable br, denn
		// das andere ist wie oben schon geschildert nur im Konstruktor
		// erreichbar.
		// Die Klassenvariable br existiert zwar ihr wurde aber kein Objekt zugewiesen
		// deswegen bekommst du hier ein Null...Exeption
		// Weiterhin fehlt hier bei dir das Exeption
		try {
			System.out.println("Test: " + br.readLine());
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}


Vg Erdal
 
Zurück