2013-07-13 5 views
10

Ho il seguente codice per leggere un file di testo.NetBeans Java Project Percorso del file di testo

public static void main(String[] args) 
{ 
    try 
    { 
    Scanner in = new Scanner(new FileReader("input.txt")); 
    while(in.hasNext()) 
    { 
     System.out.println(in.next()); 
    } 
} 
catch (FileNotFoundException ex) 
{ 
    Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); 
} 
} 

ho la mia struttura del progetto impostato come segue:

build/ directory contains class 
dist/ directory contains the jar file 
src/ directory contains source 
input.txt the text file to read 

Se ho messo il mio file di testo input.txt in una directory chiamata test che è della stessa directory build, dist e src, cosa dovrebbe andare nel parametro di filereader in modo che possa ancora trovare questo file?

risposta

9

Quando si esegue all'interno dell'IDE Netbeans, la directory di lavoro è la radice del progetto, quindi per rispondere alla domanda "test/input.txt".

Nota che, sebbene questo sia perfettamente adatto per testare il codice, lavorare con percorsi relativi come questo nel codice finale (di produzione) può essere più complicato. In quei casi il wrapping del file come risorsa nel jar e l'apertura come un resourcestream potrebbe essere una soluzione migliore, o, naturalmente, lavorare con percorsi assoluti.

+0

Mi potete dare un po 'più di informazioni su come avvolgere il file come una risorsa nel vaso? grazie – Rhs

+0

Su SO le domande "daisychaining" sono meglio evitate e questo ci porterebbe piuttosto lontano dalla domanda originale. Dai un'occhiata ad alcune domande su questo argomento, ad es. [Qui] (http://stackoverflow.com/questions/10605207/accessing-a-java-resource-as-a-file) o [qui] (http: // stackoverflow.com/questions/13114852/using-resource-files-in-java) e molti altri (usa la funzionalità di ricerca) e [questo blog] (http://capturevision.wordpress.com/2008/06/28/ how-to-embed-resource-files-using-netbeans /) mostra come aggiungerli in NB. Se la tua corsa ai problemi non esita ad aprire una nuova domanda. – fvu

5

Se si conosce il nome della sottodirectory, basta usare

Scannner in = new Scanner(new FileReader("test/input.txt")); 
+1

la versione Windows di Java è anche in grado di funzionare con "test/input.txt", quindi la versione backslash non è affatto necessaria. – fvu