2016-04-21 7 views
1

Ich habe versucht, über FileReader zu lernen und wollte es daher testen. Ich habe eine Klasse erstellt, deren Konstruktor eine Zeichenkette (Name der Datei) aufnimmt und eine Datei erstellt und dann liest und dann das erste Zeichen ausgibt, aber mein Code funktioniert nicht und zeigt Fehler an. Das ist mein Java-Code.Was ist falsch an diesem Code in Java, der FileReader verwendet?

package test_3; 

import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.FileReader; 
import java.io.IOException; 

public class Files { 
    public Files(String s) throws FileNotFoundException, IOException{ 
     File f = new File(s); 
     FileReader fr = new FileReader(f); 
     System.out.println(fr.read()); 
    } 

    public static void main(String args[]) throws FileNotFoundException, IOException{ 
     Files myFile = new Files("input.txt"); 
    } 
} 

Dies ist die Fehlerinformation

Exception in thread "main" java.io.FileNotFoundException: input.txt (The system cannot find the file specified) 
    at java.io.FileInputStream.open0(Native Method) 
    at java.io.FileInputStream.open(Unknown Source) 
    at java.io.FileInputStream.<init>(Unknown Source) 
    at java.io.FileReader.<init>(Unknown Source) 
    at test_3.Files.<init>(Files.java:11) 
    at test_3.Files.main(Files.java:16) 
+4

* Das System kann die angegebene Datei * nicht finden. Die Datei "input.txt" 'befindet sich also nicht im selben Verzeichnis wie die Klasse' Files'. Wo befindet sich die Datei? – Tunaki

+2

Auch: wenn es funktioniert, sollten Sie 'fr' nach der Verwendung schließen - und Sie werden wahrscheinlich feststellen, dass die Ausgabe von' System.out.println (fr.read()); 'nicht was ist Sie erwarten (es wird eine ganze Zahl sein, kein Zeichen). –

+2

@Tunaki Das Verzeichnis, in dem sich die Klasse Files befindet, hat nichts damit zu tun. – EJP

Antwort

3

Da die Datei nicht gefunden werden kann. Was Sie tun sollten ist, den Pfad zu bekommen, wo Java nach der Datei sucht, so.

System.out.print(System.getProperty("user.dir")); 

Und dann Platz „input.txt“ in diesem Verzeichnis (das Verzeichnis, das gedruckt wird, wenn dieser Code RAN).

Alternativ verwenden Sie den vollständigen absoluten Pfad zur Eingabe.txt

+1

Vielen Dank. Ich lege meine Datei auf eine Ebene innerhalb des Pfades, den ich tatsächlich hatte, und daher bekam ich diesen Fehler. Vielen Dank. – theprogrammer094

+0

Ja, danke. Ich war nicht in der Lage, es aufgrund der zeitlichen Beschränkungen des Standortes zu tun. – theprogrammer094