Scrivi su un stream di file restituito da getResourceAsStream ()

Ricevo un InputStream da getResourceAsStream() e sono riuscito a leggere dal file passando l’ InputStream restituito a BufferedReader .

C’è un modo per scrivere anche nel file?

Non direttamente, no – getResourceAsStream() scopo di restituire una vista sulle risorse di sola lettura.

Se sai che la risorsa è un file scrivibile, però, puoi saltare attraverso alcuni cerchi, ad es

 URL resourceUrl = getClass().getResource(path); File file = new File(resourceUrl.toURI()); OutputStream output = new FileOutputStream(file); 

Questo dovrebbe funzionare bene sui sistemi in stile Unix, ma i percorsi dei file di Windows potrebbero dare questa indigestione. Provalo e scopri, però, potresti essere OK.

C’è un modo per scrivere anche nel file?

Chi dice che è un file? L’intero punto di getResourceAsStream() è di getResourceAsStream() perché potrebbe non essere vero. Nello specifico, la risorsa può trovarsi in un file JAR, può essere letta da un server HTTP o in realtà qualsiasi cosa che l’implementatore di ClassLoader potrebbe immaginare.

Davvero non dovresti voler scrivere su una risorsa che fa parte della distribuzione del tuo programma. È concettualmente la cosa sbagliata da fare nella maggior parte dei casi. Le impostazioni o i dati specifici dell’utente dovrebbero andare all’API Preferenze o alla directory home dell’utente.