2010-02-08 10 views
16

Utilizzando JNLP, ho questa linea:Come sostituire StringBufferInputStream con StringReader?

File_Save_Service.saveFileDialog(null,null,new StringBufferInputStream("testing"),null); 

Come sostituire StringBufferInputStream con StringReader in questa linea? L'API per StringBufferInputStream dice meglio usare StringReader, ma come convertire tra diversi tipi?

risposta

28

FileSaveService.saveFileDialog accetta un InputStream, non un Reader (perché vuole dati binari, non dati di carattere).

StringBufferInputStream è deprecato perché non converte correttamente i caratteri in byte.

È possibile utilizzare ByteArrayInputStream invece:

new ByteArrayInputStream("the string".getBytes("UTF-8")) 
+1

Il punto chiave è l'InputStream ha bisogno di sapere come codificare i vostri byte. – Matt

+0

Sì, è necessario selezionare una codifica (UTF-8 nell'esempio sopra). – Thilo

1

Le librerie di classi Java standard non offrono alcun modo per avvolgere un Reader come InputStream, ma la seguente domanda di SO e le sue risposte offrono alcune soluzioni. Fai attenzione a leggere la stampa fine!

How to convert a Reader to InputStream and a Writer to OutputStream?

Tuttavia, è più semplice di attaccare solo con quello che hai, (se questo è solo il codice di prova unit ... come sembra essere), o per sostituire la StringInputStream con un ByteArrayInputStream come descritto dalla risposta di @ Thilo.