web-dev-qa-db-fra.com

Lire du fichier en éclipse

J'essaie de lire un fichier texte pour saisir des données dans mon programme Java. Cependant, Eclipse me donne continuellement une erreur Source non trouvée, peu importe où je mets le fichier.

J'ai créé un dossier de sources supplémentaire dans le répertoire du projet. Le fichier en question se trouve à la fois dans le fichier et le fichier bin du projet. Il ne le trouve toujours pas. 

J'en ai même mis une copie sur mon bureau et j'ai essayé de pointer Eclipse à cet endroit lorsqu'il m'a demandé de rechercher le chemin de recherche source.

Peu importe ce que je fais, le fichier ne peut pas être trouvé.

voici mon code au cas où il serait pertinent:

System.out.println(System.getProperty("user.dir"));
    File file = new File("file.txt");


    Scanner scanner = new Scanner(file);

en outre, il est indiqué que le répertoire de l'utilisateur est le répertoire du projet et qu'il y en a une copie également.

Je n'ai aucune idée de quoi faire.

Merci, Alex

après avoir tenté la suggestion ci-dessous et avoir rafraîchi à nouveau, j'ai été accueilli par une foule d'erreurs.

FileNotFoundException(Throwable).<init>(String) line: 195   
FileNotFoundException(Exception).<init>(String) line: not available 
FileNotFoundException(IOException).<init>(String) line: not available   
FileNotFoundException.<init>(String) line: not available    
URLClassPath$JarLoader.getJarFile(URL) line: not available  
URLClassPath$JarLoader.access$600(URLClassPath$JarLoader, URL) line: not available  
URLClassPath$JarLoader$1.run() line: not available  
AccessController.doPrivileged(PrivilegedExceptionAction<T>) line: not available [native method] 
URLClassPath$JarLoader.ensureOpen() line: not available 
URLClassPath$JarLoader.<init>(URL, URLStreamHandler, HashMap) line: not available   
URLClassPath$3.run() line: not available    
AccessController.doPrivileged(PrivilegedExceptionAction<T>) line: not available [native method] 
URLClassPath.getLoader(URL) line: not available 
URLClassPath.getLoader(int) line: not available 
URLClassPath.access$000(URLClassPath, int) line: not available  
URLClassPath$2.next() line: not available   
URLClassPath$2.hasMoreElements() line: not available    
ClassLoader$2.hasMoreElements() line: not available 
CompoundEnumeration<E>.next() line: not available   
CompoundEnumeration<E>.hasMoreElements() line: not available    
ServiceLoader$LazyIterator.hasNext() line: not available    
ServiceLoader$1.hasNext() line: not available   
LocaleServiceProviderPool$1.run() line: not available   
AccessController.doPrivileged(PrivilegedExceptionAction<T>) line: not available [native method] 
LocaleServiceProviderPool.<init>(Class<LocaleServiceProvider>) line: not available  
LocaleServiceProviderPool.getPool(Class<LocaleServiceProvider>) line: not available 
NumberFormat.getInstance(Locale, int) line: not available   
NumberFormat.getNumberInstance(Locale) line: not available  
Scanner.useLocale(Locale) line: not available   
Scanner.<init>(Readable, Pattern) line: not available   
Scanner.<init>(ReadableByteChannel) line: not available 
Scanner.<init>(File) line: not available    

code utilisé:

System.out.println(System.getProperty("user.dir"));
    File file = new File(System.getProperty("user.dir") + "/file.txt");


    Scanner scanner = new Scanner(file);
17
Buzkie

Avez-vous essayé d'actualiser (clic droit -> actualiser) le dossier du projet après y avoir copié le fichier? Cela synchronisera votre système de fichiers avec le système de fichiers interne d'Eclipse.

Lorsque vous exécutez des projets Eclipse, le CWD (répertoire de travail actuel) est le répertoire racine du projet. Pas le répertoire de bin. Pas le répertoire de src, mais le répertoire racine.

De plus, si vous êtes sous Linux, n'oubliez pas que ses systèmes de fichiers sont généralement sensibles à la casse.

19
Pablo Santa Cruz

Avez-vous essayé d'utiliser un chemin absolu:

File file = new File(System.getProperty("user.dir") + "/file.txt");
7
kgiannakakis

Vous recherchez/lisez le fichier "fiel.txt" dans le répertoire d'exécution (où la classe est stockée, je pense). 

Si vous souhaitez lire le fichier dans un répertoire donné, vous devez le préciser:

File file = new File(System.getProperty("user.dir")+"/"+"file.txt");

Vous pouvez également donner au répertoire un chemin relatif, par exemple "./images/photo.gif) pour un sous-répertoire par exemple.

Notez qu'il existe également une propriété pour le séparateur (codé en dur en "/" dans mon exemple)

salutations Guillaume

4
PATRY Guillaume

J'utilise Eclipse et j'étais bloqué sur l'impossibilité de lire les fichiers à cause d'une "exception de fichier introuvable". Pour résoudre ce problème, j'ai déplacé le fichier à la racine de mon projet. J'espère que cela t'aides.

3
Electron

Il n'y a rien de mal avec votre code, ce qui suit fonctionne bien pour moi lorsque j'ai le fichier file.txt dans le répertoire user.dir.

import Java.io.File;
import Java.util.Scanner;

public class testme {
    public static void main(String[] args) {
        System.out.println(System.getProperty("user.dir"));
        File file = new File("file.txt");
        try {
            Scanner scanner = new Scanner(file);
        } catch (Exception e) {
        System.out.println(e);
        }
    }
}

Ne faites pas confiance à Eclipse pour indiquer où se trouve le fichier. Accédez au système de fichiers actuel avec Windows Explorer ou son équivalent et vérifiez.

Sur la base de votre modification, je pense que nous devons également consulter vos déclarations d'importation.

1
paxdiablo

Parfois, même lorsque le fichier se trouve dans le bon répertoire, il existe toujours l’exception "fichier non trouvé". Une chose à faire est de déposer le fichier texte dans Eclipse, où se trouvent vos classes, du côté gauche. Il va vous demander si vous voulez copier, cliquez sur oui. Parfois ça aide.

0
cdhw

vous devez simplement obtenir le chemin absolu du fichier, car le fichier que vous recherchez n'existe pas dans l'espace de travail d'exécution d'Eclipsevous pouvez utiliser les méthodes - getProperty () ou getLocationURI () pour obtenir le chemin absolu du fichier. fichier

0
shreyu108