View Full Version : [JAVA] scrivere su un file contenuto all'interno di un jar
bobby1112
04-09-2010, 17:41
salve ragazzi sto creando un 'applicazione che deve leggere e scrivere su dei file, quando creo il .jar dell' applicazione mi da dei problemi nella lettura e nella scrittura.
per la lettura ho risolto in questo modo:
InputStream fstream=getClass().getResourceAsStream("/files/reg.log");
BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
String strLine;
if ((strLine = br.readLine()) != null)
{
System.out.println(strLine);
return true;
}
}catch (Exception e){
System.err.println("Errore: " + e.getMessage());
}
per quanto riguarda la scrittura utilizzo questo modo ma non va
FileOutputStream file;
try {
file = new FileOutputStream(getClass().getResource("/files/reg.log").toString());
PrintStream out=new PrintStream(file);
out.println("ciao");
out.close();
banryu79
04-09-2010, 18:18
per quanto riguarda la scrittura utilizzo questo modo ma non va
"non va" è un pelo generico.
Comunque penso che un errore stia qui:
...
file = new FileOutputStream(getClass().getResource("/files/reg.log").toString());
...
Con getClass().getResource(eccetera) ottieni un riferimento a un URL.
Prova un po' a stampare il risultato dell'invocazione del metodo toString() di quell'URL e vedrai che stringa passi come argomento a FileOutputStream...
bobby1112
06-09-2010, 00:00
Con getClass().getResource(eccetera) ottieni un riferimento a un URL.
Prova un po' a stampare il risultato dell'invocazione del metodo toString() di quell'URL e vedrai che stringa passi come argomento a FileOutputStream...
mi stampa questo
file:/C:/Users/Bobby/Documents/workspace/Gestionale/bin/files/reg.log
e mi restituisce questa eccezione
java.io.FileNotFoundException: file:\C:\Users\Bobby\Documents\workspace\Gestionale\bin\files\reg.log (La sintassi del nome del file, della directory o del volume non è corretta)
banryu79
06-09-2010, 09:05
... cut ...
Non ho capito: l'eccezione restituita accompagnata dal messaggio che hai postato ti sta dicendo esattamente quale è il problema... il tuo ultimo messaggio è una richiesta di aiuto?
Se sì, il problema è che questa stringa:
file:\C:\Users\Bobby\Documents\workspace\Gestionale\bin\files\reg.log
deve diventare così:
C:\Users\Bobby\Documents\workspace\Gestionale\bin\files\reg.log
...mi intrometto...ma è possibile scrivere all'interno di un jar?...non lo sapevo...
...ciao Andrea...
banryu79
06-09-2010, 16:55
...mi intrometto...ma è possibile scrivere all'interno di un jar?...non lo sapevo...
...ciao Andrea...
Avevo anche io questo dubbio, ma è stato chiarito implicitamente perchè se guardi la stringa che rappresenta il valore dell'URL della risorsa su cui vuole scrivere l'utente vedrai che è un file nel sistema ospite.
Solo che, appunto, essendo un URL la stringa restituita da toString non è un path di sistema, ma un... url! (il quale, oltre al "path" della risorsa può essere formato da altre parti, come il protocollo).
Avevo anche io questo dubbio, ma è stato chiarito implicitamente perchè se guardi la stringa che rappresenta il valore dell'URL della risorsa su cui vuole scrivere l'utente vedrai che è un file nel sistema ospite.
Solo che, appunto, essendo un URL la stringa restituita da toString non è un path di sistema, ma un... url! (il quale, oltre al "path" della risorsa può essere formato da altre parti, come il protocollo).
...si ok...ma stiamo sempre parlando di un archivio...non pensavo fosse una manovra consentita...
...ciao Andrea...
banryu79
06-09-2010, 17:37
...si ok...ma stiamo sempre parlando di un archivio...non pensavo fosse una manovra consentita...
...ciao Andrea...
Beh, penso che si tratti di un'applicazione desktop distribuita come .jar, questo almeno lo davo per scontato! :D
In ogni caso per scrivere un file sul sitema ospite entrano in gioco i soliti noti (SecurityManager della piattaforma Java, e, lato sistema ospitante, gli eventuali permessi in scrittura per l'utente di sistema attuale).
Quindi se non potrà farlo per uno di questi motivi, lo sapremo dopo che l'utente avrà sistemato questo primo problema relativo alla stringa restituita dall'URL. Per ora, il problema è che la stringa passata per costruire il FileOutputStream non è un path valido, l'eccezione dice questo ;)
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.