Java中怎么對InputStream進行操作,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
1、in.available()該方法不能保證所有的流已到達
//這種寫法在網絡請求數據時會導致接收數據不完整 byte[] input = new byte[in.available()]; in.read(input);
2、二進制流讀取錯誤方式
byte[] buffer = new byte[1024]; BufferedInputStream bis = new BufferedInputStream(in); ByteArrayOutputStream bos = new ByteArrayOutputStream(); while(bis.read(buffer) != -1){ //這個寫法會導致buffer數組沒有清空,數據會比原數據流多 bos.write(buffer); } byte[] input = bos.toByteArray();
3、正確的讀取方式
int n; byte[] buffer = new byte[1024]; BufferedInputStream bis = new BufferedInputStream(in); ByteArrayOutputStream bos = new ByteArrayOutputStream(); while((n=bis.read(buffer)) != -1){ bos.write(buffer,0,n);//每次保證只寫入讀到的流位置 } byte[] input = bos.toByteArray();
4、快速讀取網絡流
//使用現成工具讀取 URL imgUrl = new URL(path); byte[] input = IOUtils.toByteArray(imgUrl);
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。