字節流分段讀取

遇到一個問題,字節流操作方面的,在windows環境下一定數據量沒有問題,但是發佈到Linux服務器上面的時候,出現寫文件不完整的問題,socket編程有待加強。

參考文章
[url]http://www.blogjava.net/pengpenglin/archive/2008/08/06/220350.html[/url]

該方法中使用一個無限循環,從字節流中讀取字節,存放到byte數組中,每次讀取1024個字節(一般都是這個設置),由於每次讀取的字節數量不一定夠1024個(比如最後一次的讀取就可能不夠),所以我們要記錄每次實際讀到的字節數,然後將實際讀取到的字節按指定的編碼方式轉換成字符串。

private String inputStreamToString(InputStream is, String encoding) {
try {
byte[] b = new byte[1024];
String res = "";
if (is == null) {
return "";
}

int bytesRead = 0;
while (true) {
bytesRead = is.read(b, 0, 1024); // return final read bytes counts
if (bytesRead == -1) {// end of InputStream
return res;
}
res += new String(b, 0, bytesRead, encoding); // convert to string using bytes
}
} catch (Exception e) {
e.printStackTrace();
System.out.print("Exception: " + e);
return "";
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章