java - inputstream流讀到最后為什么沒有返回 -1 ?
問題描述
InputStream fileSource = req.getInputStream();String tempFile = '/home/joy/桌面/tempFile';FileOutputStream tempFileOutputStream = new FileOutputStream(tempFile);byte[] bytes = new byte[10 * 1024];int i = 0;while ((i = fileSource.read(bytes, 0, bytes.length)) != -1) { System.out.println('已讀字節(jié):' + i + ', 剩余字節(jié): ' + fileSource.available()); System.out.println(new String(bytes)); tempFileOutputStream.write(bytes); tempFileOutputStream.flush(); if (fileSource.available() < bytes.length) {bytes = new byte[fileSource.available()]; }}tempFileOutputStream.close();fileSource.close();
為什么該流讀完的時候并沒有返回-1,而是返回0,導致無限循環(huán).(上傳文檔類型文件不會,字節(jié)文件就會發(fā)生這種情況)
問題解答
回答1:應該是你最后對buffer的處理導致剛剛好讀取完文件吧
if (fileSource.available() < bytes.length) { bytes = new byte[fileSource.available()];}
一般情況下不需要重設buffer的大小
相關(guān)文章:
1. 在應用配置文件 app.php 中找不到’route_check_cache’配置項2. html按鍵開關(guān)如何提交我想需要的值到數(shù)據(jù)庫3. HTML 5輸入框只能輸入漢字、字母、數(shù)字、標點符號?正則如何寫?4. gvim - 誰有vim里CSS的Indent文件, 能縮進@media里面的5. 利用百度地圖API定位及附件商家信息服務6. 跟著課件一模一樣的操作使用tp6,出現(xiàn)了錯誤7. PHP類屬性聲明?8. javascript - 求助canvas繪制馬賽克的問題,老是取色不準9. java - 安卓接入微信登錄,onCreate不會執(zhí)行10. javascript - 請教如何獲取百度貼吧新增的兩個加密參數(shù)
