wake-up-neo.com

Das System kann die in Java angegebene Datei nicht finden

Ich mache ein Programm, das eine Datei öffnet und liest. Dies ist mein Code:

import Java.io.*;

public class FileRead{
    public static void main(String[] args){
        try{
            File file = new File("hello.txt");
            System.out.println(file.getCanonicalPath());
            FileInputStream ft = new FileInputStream(file);

            DataInputStream in = new DataInputStream(ft);
            BufferedReader br = new BufferedReader(new InputStreamReader(in));
            String strline;

            while((strline = br.readLine()) != null){
                System.out.println(strline);
            }
            in.close();
        }catch(Exception e){
            System.err.println("Error: " + e.getMessage());
        }
    }
}

aber wenn ich renne, erhalte ich diesen Fehler:

C:\Users\User\Documents\Workspace\FileRead\hello.txt
Error: hello.txt (The system cannot find the file specified)

mein FileRead.Java und hello.txt befinden sich in demselben Verzeichnis, in dem gefunden werden kann

C:\Users\User\Documents\Workspace\FileRead

Ich frage mich, was ich falsch mache?

19
gadss

Ich habe Ihren Code kopiert und er läuft einwandfrei.

Ich vermute, Sie haben einfach ein Problem mit dem tatsächlichen Dateinamen von hello.txt oder Sie führen ein falsches Verzeichnis. Erwägen Sie die Überprüfung anhand der von @ Eng.Fouad vorgeschlagenen Methode 

9
Adrian Shum

Versuchen Sie, die Namen aller Dateien im Verzeichnis aufzulisten, indem Sie Folgendes aufrufen:

File file = new File(".");
for(String fileNames : file.list()) System.out.println(fileNames);

und sehen, ob Sie Ihre Dateien in der Liste finden.

45
Eng.Fouad

Sie müssen den absoluten Pfadnamen dort angeben, wo die Datei existiert.

        File file = new File("C:\\Users\\User\\Documents\\Workspace\\FileRead\\hello.txt");
3
user1420750

Im Allgemeinen bedeutet die Angabe des Dateinamens im Dateikonstruktor, dass sich die Datei im selben Verzeichnis wie die Java-Datei befindet. Wenn Sie jedoch IDEs wie NetBeans und Eclipse verwenden, d. H. Nicht, müssen Sie die Datei im Projektordner speichern. Ich denke, das zu überprüfen, wird Ihr Problem lösen.

3
user3051574

Klicken Sie in Ihrer IDE mit der rechten Maustaste auf die Datei, die Sie lesen möchten, und wählen Sie "Pfad kopieren" Fügen Sie sie in Ihren Code ein.

Beachten Sie, dass Windows die Dateierweiterung verbirgt. Wenn Sie eine Textdatei "myfile.txt" erstellen, wird sie möglicherweise als "myfile.txt.txt" gespeichert.

2
moshik

Wie läuft das Programm? 

Es wird nicht die Java-Datei ausgeführt, die ausgeführt wird, sondern die .class-Datei, die durch Kompilieren des Java-Codes erstellt wird. Sie müssen entweder den absoluten Pfad wie in user1420750 oder einen relativen Pfad zu Ihrem System.getProperty("user.dir")-Verzeichnis angeben. Dies sollte das Arbeitsverzeichnis oder das Verzeichnis sein, von dem aus Sie den Java-Befehl ausgeführt haben.

1
km1

Wenn Sie ein jar ausführen, wird Ihre Main-Klasse selbst zu args [0] und Ihr Dateiname kommt unmittelbar danach.

Ich hatte das gleiche Problem: Ich konnte meine Datei finden, wenn der absolute Pfad von Eclipse angegeben wurde (da ich mich auf die Datei als args [0] bezog). Aber als ich das Gleiche mit jar lief, versuchte ich, meine Hauptklasse zu finden - als ich auf die Idee kam, dass ich meine Akte in args [1] lesen sollte.

0
sivaram

Erstellen Sie zuerst einen Ordner wie den von Ihnen angegebenen Pfad. Danach erstellen Sie eine Datei

File dir = new File("C:\\USER\\Semple_file\\");
File file = new File("C:\\USER\\Semple_file\\abc.txt");

if(!file.exists())
{
    dir.mkdir();
    file.createNewFile();
    System.out.println("File,Folder Created.);
}
0
Bhola