Java中怎么對InputStream進(jìn)行操作,很多新手對此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
創(chuàng)新互聯(lián)長期為近千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為青州企業(yè)提供專業(yè)的成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì),青州網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
1、in.available()該方法不能保證所有的流已到達(dá)
//這種寫法在網(wǎng)絡(luò)請求數(shù)據(jù)時(shí)會導(dǎo)致接收數(shù)據(jù)不完整 byte[] input = new byte[in.available()]; in.read(input);
2、二進(jìn)制流讀取錯(cuò)誤方式
byte[] buffer = new byte[1024]; BufferedInputStream bis = new BufferedInputStream(in); ByteArrayOutputStream bos = new ByteArrayOutputStream(); while(bis.read(buffer) != -1){ //這個(gè)寫法會導(dǎo)致buffer數(shù)組沒有清空,數(shù)據(jù)會比原數(shù)據(jù)流多 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、快速讀取網(wǎng)絡(luò)流
//使用現(xiàn)成工具讀取 URL imgUrl = new URL(path); byte[] input = IOUtils.toByteArray(imgUrl);
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。