Используя JNLP, у меня есть эта строка:
File_Save_Service.saveFileDialog(null,null,new StringBufferInputStream("testing"),null);
Как заменить StringBufferInputStream StringReader в этой строке? API для StringBufferInputStream говорит, что лучшее использование StringReader, но как преобразовать между различными типами?
FileSaveService.saveFileDialog принимает InputStream, а не Reader (потому что ему нужны двоичные данные, а не символы данные).
StringBufferInputStream устарел, потому что он не преобразует символы в байты должным образом.
Вместо этого можно использовать ByteArrayInputStream:
new ByteArrayInputStream("the string".getBytes("UTF-8"))
Стандартные библиотеки классов Java не предлагают возможности обернуть Reader
как InputStream
, но следующая SO вопрос и ответы на него предлагают некоторые решения. Внимательно читайте мелкий шрифт!
Как преобразовать Reader в InputStream и Writer в OutputStream?
Однако проще просто придерживаться того, что у вас есть (если это просто код модульного теста ... как кажется) или заменить StringInputStream
на ByteArrayInputStream
, как описано в ответе @ Thilo.