Как заменить 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.