Как заменить StringBufferInputStream на StringReader?

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

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

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

Ответы

Ответ 1

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

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

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

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

Ответ 2

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

Как конвертировать Reader в InputStream и Writer в OutputStream?

Однако проще просто придерживаться того, что у вас есть (если это всего лишь код unit test... как он кажется), или заменить StringInputStream на ByteArrayInputStream, как описано Ответ @Thilo.