2009-03-25 15 views
15

Sto provando a leggere da un file di testo per immettere dati nel mio programma java. Tuttavia, eclipse mi dà continuamente un errore Source non trovato, non importa dove ho messo il file.Lettura dal file in eclissi

Ho creato una cartella aggiuntiva di sorgenti nella directory del progetto, il file in questione si trova sia in esso che nel file bin per il progetto e non è ancora in grado di trovarlo.

Ne ho persino messo una copia sul desktop e ho provato a indicare eclissi lì quando mi ha chiesto di cercare il percorso di ricerca dell'origine.

Non importa cosa faccio, non è possibile trovare il file.

ecco il mio codice nel caso in cui è pertinente:

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


    Scanner scanner = new Scanner(file); 

in aggiunta, si dice la directory utente è la directory del progetto e non v'è una copia anche lì.

Non ho idea di cosa fare.

Grazie, Alex

dopo aver tentato il suggerimento qui sotto e rinfrescante di nuovo, sono stato accolto da una serie di errori. Codice

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  

usato:

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


    Scanner scanner = new Scanner(file); 

risposta

18

Hai provato rinfrescante (tasto destro -> refresh) la cartella di progetto dopo la copia del file lì dentro? Ciò sincronizzerà il tuo file system con il file system interno di Eclipse.

Quando si eseguono progetti Eclipse, CWD (directory di lavoro corrente) è la directory radice del progetto. Non la directory di bin. Non la directory di src, ma la directory di root.

Inoltre, se sei in Linux, ricorda che i file system di solito sono case sensitive.

+0

Penso che il problema era che avevo aggiornato il file src e file, ma non il file di progetto, quindi non l'ha mai trovato. grazie per l'aiuto – Buzkie

+0

Hai risolto il tuo problema? –

+0

sì funziona ora – Buzkie

7

Hai provato a usare un percorso assoluto:

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

Non c'è niente di sbagliato nel codice, il seguente funziona bene per me quando ho il file.txt nella directory 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); 
     } 
    } 
} 

Non fidatevi di Eclipse con il nome del file. Vai al filesystem attuale con Windows Explorer o equivalente e controlla.

In base alla modifica, penso che dobbiamo vedere anche le istruzioni di importazione.

4

Stai cercando/leggendo il file "fiel.txt" nella directory di esecuzione (dove la classe è memorizzata, penso).

Se lo preferite leggere il file in una determinata directory, bisogna dice così:

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

si potrebbe anche dare la directory con un percorso relativo, ad esempio" ./images/photo.gif) per una sottodirectory, ad esempio.

Nota che c'è anche una proprietà per il separatore (hard-coded a "/" nella mia exemple)

riguarda Guillaume

0

è sufficiente per ottenere l'assoluto-percorso del file, dato che il file che stai cercando non esiste nello spazio di lavoro runtime di eclipse puoi usare i metodi - getProperty() o getLocationURI() per ottenere il percorso assoluto del file

3

Sto usando eclissi e sono rimasto bloccato su essere in grado di leggere i file a causa di un "file non trovato eccezione". Quello che ho fatto per risolvere questo problema è stato spostare il file alla radice del mio progetto. Spero che questo ti aiuti.

0

A volte, anche quando il file si trova nella directory corretta, esiste ancora l'eccezione "file non trovato". Una cosa che potresti fare è rilasciare il file di testo all'interno di eclipse, dove si trovano le tue classi, sul lato sinistro. Ti verrà chiesto se vuoi copiare, fai clic su Sì. A volte aiuta.

Problemi correlati