PDA

Visualizza la versione completa : [JAVA EE] Leggere un file di testo


maverick5
02-11-2010, 20:24
Salve,
avevo creato un progetto in JAVA SE ed una classe riusciva a leggere il contenuto di un file di testo "config.ini" senza problema.

Poi sono passato alla JAVA EE (Enterprise Edition) e ho direttamente copiato tutte le classi utilizzate nel precedente progetto.

Funziona tutto.
Tranne la lettura del file "config.ini", infatti il programma mi restituisce un errore quando prova a leggere questo file:

java.io.FileNotFoundException: config.ini (Impossibile trovare il file specificato)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:106)

Il codice che utilizzavo iniziava così:

File f = new File("config.ini");
FileInputStream fis = new FileInputStream(f); [...]
e poi leggeva correttamente il contenuto del file.

Come faccio a far leggere un file di testo in JAVA EE?
Dove devo mettere il file? In quale cartella?
Che URL/indirizzo devo usare nella classe?

Aggiungo che utilizzo NetBeans + Apache Tomcat 6.0.20, se può servire.

Grazie 1000 a chiunque riesca a darmi una mano :)

MdE2005
02-11-2010, 21:05
Premesso che un moderatore sposterà la discussione nella sezione apposita, potresti provare a leggere qui:

http://www.mrwebmaster.it/java/articoli/leggere-contenuto-file-java_809.html


Ciao :)

maverick5
02-11-2010, 22:12
ciao!

nel link che mi hai postato compare:



File doc=new File("C:/doc.txt");
URL path=null;

[...]
path=doc.toURL();
[...]
doc=new File(path.getFile());


Ma in questo caso viene inserito un percorso locale (C:/...) mentre a me serve un percorso di riferimento per il server e sopratutto sapere dove mettere il file :)

MdE2005
03-11-2010, 10:27
Avevo capito che il problema risiedeva nelle librerie utilizzate, e NON dal percorso del file: dal tuo primo post si capisce che, lo stesso codice, in JSE funzionava mentre con JEE dava i problemi che hai sottolineato.
Quindi non è un problema di percorso file..

maverick5
03-11-2010, 10:36
tranquillo, almeno hai provato a darmi una mano :) :)

invece credo che il problema sia il percorso perchè come errore non trova il file :(

valia
03-11-2010, 10:56
esiste il file al path specificato? come costruisci il path?

LeleFT
03-11-2010, 11:20
Originariamente inviato da maverick5
1) Come faccio a far leggere un file di testo in JAVA EE?
2) Dove devo mettere il file? In quale cartella?
3) Che URL/indirizzo devo usare nella classe?


1) Esattamente come in JavaSE. JavaEE è solo un'insieme di librerie e framework che si aggiungono a JavaSE. JavaEE non funziona senza JavaSE.

2) Dove ti pare, basta che sia coscente del fatto che per raggiungere quel file devi dargli un percorso (assoluto o relativo alla document base del tuo progetto e non relativo alla directory corrente, come stai cercando di fare). Usi Tomcat, quindi immagino che si tratti di una WebApp (con le Servlet). In questo caso, un posto "furbo" potrebbe essere la cartella WEB-INF contenuta all'interno della document base.

3) Dipende da dove hai posizionato il file. Se decidi di inserire il file nella directory WEB-INF, puoi costruire il percorso in questo modo:



// Ottieni un riferimento al ServletContext
ServletContext sc = ...;

FileInputStream fis = new FileInputStream( sc.getResourceAsStream("/WEB-INF/config.ini") );

// Usi il FileInputStream


Ovviamente tutto dipente da quali oggetti hai a disposizione... non avendo detto nulla di ciò che stai facendo si va a tentoni...


Ciao. :ciauz:

maverick5
03-11-2010, 11:20
Originariamente inviato da valia
esiste il file al path specificato? come costruisci il path?

il problema è proprio questo:
non so quale sia il path e dove mettere il file.

Non riesco nemmeno a caricare un file di testo dalla servlet, anche qui stesso problema.

LeleFT
03-11-2010, 11:22
Originariamente inviato da maverick5
il problema è proprio questo:
non so quale sia il path e dove mettere il file.

Non riesco nemmeno a caricare un file di testo dalla servlet, anche qui stesso problema.

Bene... ora sappiamo almeno che hai una Servlet.

Vedi il mio post precedente. Per ottenere il ServletContext, dalla Servlet hai il metodo getServletConfig().getServletContext().


Ciao. :ciauz:

maverick5
03-11-2010, 11:45
Ho risolto.

Ho inserito
String path = getServletContext().getRealPath("/");
File f = new File(path + "config.ini").

E ho messo il file config.ini direttamente nella cartella contenente le pagine web (in NetBeans è di default la cartella \web).

Ringrazio Mde2005, valia e leleft per l' aiuto e per la disponibilità, quando avete bisogno voi fate un fischio e spero di poter essere utile anch'io :)

Loading