2010-02-08 21 views
16

使用JNLP,我有這樣一行:如何用StringReader替換StringBufferInputStream?

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

如何在這條線與StringReader替換StringBufferInputStream的? StringBufferInputStream的API表示更好地使用StringReader,但是如何在不同類型之間進行轉換?

回答

28

FileSaveService.saveFileDialog獲取InputStream,而不是閱讀器(因爲它要的二進制數據,而不是字符數據)。

的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?

然而,這是簡單的只是你所擁有的堅持,(如果這僅僅是單元測試代碼...因爲它似乎是),或用ByteArrayInputStream如更換StringInputStream由@ Thilo的回答描述。