2011-07-06 64 views
2

我有一個字節流(由BufferedInputStream給出)表示一系列UTF-8字符串。該協議有點蹩腳,因爲它在命令之間使用0xFF,這意味着整個流不是有效的UTF-8字符串,只有0xFF之間的部分是。將字節流轉換爲字符串(UTF-8編碼)

如何提取這些UTF-8字符串。

我不認爲BufferedReader會工作,因爲0xFF會搞亂一切,我發現沒有字節數組到UTF-8字符串轉換函數。

回答

2

byte[] to String

所以會new String(bytes, "UTF-8");

您需要事先雖然過濾信息流。

+0

謝謝:-)順便說一下,爲了將Stream轉換爲byte [],我通過逐個讀取字節來填充ArrayList ,然後將其轉換爲byte []。你認爲有一個更簡單的方法來做到這一點? (我不想做一些醜陋的事情,比如聲明一個新的字節[1024],並希望輸入不會超過1024字節) –

+0

您可以使用ByteBuffer http://download.oracle.com/javase/1 ,5.0/docs/api/java/nio/ByteBuffer.html –

+0

當ByteBuffer已滿時,這似乎不會自動增長,所以我沒有真正看到興趣。我仍然必須宣佈任意大小,並希望我的意見不是太大。 –