web-dev-qa-db-fra.com

Le système ne peut pas trouver le fichier spécifié en java

Je crée un programme qui ouvre et lit un fichier. Ceci est mon 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());
        }
    }
}

mais quand je cours, j'obtiens cette erreur:

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

mon FileRead.Java et hello.txt où dans le même répertoire que l'on peut trouver dans:

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

Je me demande ce que je fais mal?

19
gadss

J'ai copié votre code et il fonctionne bien.

Je suppose que vous rencontrez simplement un problème dans le nom de fichier réel de hello.txt ou que vous utilisez un mauvais répertoire. Envisagez de vérifier par la méthode suggérée par @ Eng.Fouad 

9
Adrian Shum

Essayez de lister tous les noms de fichiers du répertoire en appelant:

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

et voyez si vous trouverez vos fichiers dans la liste.

45
Eng.Fouad

Vous devez donner le chemin absolu à l'emplacement du fichier.

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

Généralement, le simple fait d'indiquer le nom du fichier dans le constructeur File signifie que le fichier se trouve dans le même répertoire que le fichier Java. Cependant, lorsque vous utilisez des environnements de développement intégrés tels que NetBeans et Eclipse, vous devez enregistrer le fichier dans le répertoire du dossier du projet. Donc, je pense que vérifier cela résoudra votre problème.

3
user3051574

Dans votre IDE], cliquez avec le bouton droit de la souris sur le fichier que vous voulez lire et choisissez "chemin de copie" Puis collez-le dans votre code.

Notez que Windows cache l'extension du fichier. Par conséquent, si vous créez un fichier texte "myfile.txt", il sera peut-être enregistré sous le nom "myfile.txt.txt".

2
moshik

Comment gérez-vous le programme? 

Ce n'est pas le fichier Java en cours d'exécution, mais le fichier .class créé en compilant le code Java. Vous devrez soit spécifier le chemin absolu, comme indiqué par user1420750, ou un chemin relatif vers votre répertoire System.getProperty("user.dir"). Cela devrait être le répertoire de travail ou le répertoire à partir duquel vous avez exécuté la commande Java.

1
km1

Lorsque vous exécutez un fichier jar, votre classe Main elle-même devient args [0] et votre nom de fichier vient immédiatement après.

J'avais le même problème: je pouvais localiser mon fichier lorsque le chemin absolu fourni par Eclipse était fourni (car je faisais référence au fichier en tant qu'args [0]). Pourtant, lorsque j’exécutais la même chose à partir de jar, c’était pour essayer de localiser ma classe principale - c’est à ce moment-là que j’ai eu l’idée que je devrais lire mon fichier dans args [1].

0
sivaram

Commencez par créer le même dossier que le chemin spécifié. ensuite créer un fichier

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