2010-02-08 2 views
16

Используя JNLP, у меня есть эта строка:Как заменить StringBufferInputStream на StringReader?

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

Как заменить StringBufferInputStream с StringReader в этой строке? API для StringBufferInputStream говорит, что лучше использовать StringReader, но как конвертировать между различными типами?

ответ

28

FileSaveService.saveFileDialog использует InputStream, а не Reader (потому что ему нужны двоичные данные, а не символьные данные).

StringBufferInputStream устарел, поскольку он не преобразует символы в байты должным образом.

Вы можете использовать ByteArrayInputStream вместо:

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

Ключевым моментом является InputStream нужно знать, как кодировать байты. – Matt

+0

Да, вам нужно выбрать кодировку (UTF-8 в приведенном выше примере). – Thilo

1

Стандартные библиотеки классов Java не имеют возможности обернуть Reader как InputStream, но следующий вопрос SO и его ответы предлагают некоторые решения. Будьте осторожны, чтобы прочитать мелкий шрифт!

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

Однако проще просто придерживаться того, что у вас есть, (если это только блок кода тест ..., как это, кажется), или заменить StringInputStream с ByteArrayInputStream как описанный в ответ Тило.