Как заменить StringBufferInputStream на StringReader? - PullRequest
20 голосов
/ 08 февраля 2010

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

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

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

Ответы [ 2 ]

35 голосов
/ 08 февраля 2010

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

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

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

new ByteArrayInputStream("the string".getBytes("UTF-8"))
1 голос
/ 08 февраля 2010

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

Как преобразовать Reader в InputStream и Writer в OutputStream?

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

...