2010-02-08 6 views
16

Usando JNLP, tengo esta línea:Cómo reemplazar StringBufferInputStream con StringReader?

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

Cómo reemplazar StringBufferInputStream con StringReader en esta línea? La API para StringBufferInputStream dice que es mejor usar StringReader, pero ¿cómo convertir entre diferentes tipos?

Respuesta

28

FileSaveService.saveFileDialog toma un InputStream, no un Reader (porque quiere datos binarios, no datos de caracteres).

StringBufferInputStream está en desuso debido a que no convierte caracteres en bytes correctamente.

Se puede utilizar en lugar ByteArrayInputStream:

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

El punto clave es el InputStream necesita saber cómo codificar sus bytes. – Matt

+0

Sí, debe elegir una codificación (UTF-8 en el ejemplo anterior). – Thilo

1

Las bibliotecas de clase Java estándar no ofrecen ninguna forma de ajustar un Reader como InputStream, pero la siguiente pregunta SO y sus respuestas ofrecen algunas soluciones. ¡Ten cuidado de leer la letra pequeña!

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

Sin embargo, es más sencillo quedarse sólo con lo que tiene, (si esto es sólo código de prueba de unidad ... ya que parece ser), o para reemplazar el StringInputStream con un ByteArrayInputStream como descrito por la respuesta de @ Thilo.