課程
/后端開發
/Java
/文件傳輸基礎——Java IO流
課上簡單內容指針一直從0開始不是會變成死循環?
2016-04-20
源自:文件傳輸基礎——Java IO流 4-2
正在回答
int bytes = in.read(buf,0,buf.length);這個返回值,是你讀到的實際個數,例如:你buf new的事1024,但是你文件中只要100個,bytes就= 100;如果文件超過1024字節,一次讀會返回1024,第二次讀的時候,指針從1024再開始讀,每次1024個字節讀,知道讀完,所以bytes 返回值,要么是1024,要么是最后一次讀到數據,但是不足1024,返回實際值,再讀一次 就是EOF(結尾),返回-1
刃殤 提問者
海與千巷
不足1024的話它循環讀取,郁悶? 你幫我看下
package?icetest; import?java.io.FileInputStream; import?java.io.FileNotFoundException; import?java.io.IOException; import?java.util.Scanner; import?java.util.concurrent.CountDownLatch; public?class?FilesInputStream方法讀文件練習?{ ????//F:\KwDownload\Lyric\洛天依-生.lrc ???? ????public?static?void?printToHex(String?fileName)?throws?IOException?{ ????????int?num?=?0; ????????int?count?=?0; ????????byte[]?buf?=?new?byte[8*1024]; ???????? ????????FileInputStream?file; ????????try?{ ????????????file?=?new?FileInputStream(fileName); ????????????while?((num?=?file.read(buf))?!=?-1)?{ ????????????????for?(int?i=0;?i<num;?++i)?{ ????????????????????if?(++count%5?==?0) ????????????????????????System.out.println();???? ????????????????????String?st?=?new?String(buf); ???????????????????? ????????????????????System.out.print(st?+?"??"); ????????????????} ????????????} ????????}?catch?(FileNotFoundException?e)?{ ????????????//?TODO?Auto-generated?catch?block ????????????System.out.println("文件不存在!"); ????????} ???????? ????} ???? ????/** ?????*?@param?args ?????*?@throws?IOException? ?????*?@throws?FileNotFoundException? ?????*/ ????public?static?void?main(String[]?args)?throws?IOException?{ ????????//?TODO?Auto-generated?method?stub ????????Scanner?in?=?new?Scanner(System.in); ???????? ????????System.out.println("請輸入要讀取的文件:"); ????????String?fileName?=?in.next(); ???????? ????????printToHex(fileName); ????} }
我讀一個歌詞,下邊是結果
[00:03.72]作詞 : 雨貍[00:05.84]作曲 : DELA[00:07.60]如果某一個時間 我能愛上一片樹葉[00:13.16]那么某一個未來 我也能愛上某個人[00:18.60]他或讀著海子的詩篇 或者遙遠 遠在天邊[00:23.84]在某一個劇情轉折點 帶我前往明天[00:29.17]我曾在悲傷中流連 無法忘卻[00:34.45]那一天現實與夢想無情地被撕裂[01:22.45]色彩于我不過無物 晝與夜失去了區別[01:27.81]卻看得見塵霾顛簸 行走著空心的枯骨[01:33.25]終日畏懼陌生的視線 熟悉畫面 活的一切[01:38.55]恨的情感最終也干癟 在朝霞口中奄奄[01:43.62]誰看見我的黑夜 有無數的禿鷲在盤旋[01:53.22]荒涼的墳場地 予我安眠[01:59.18]無法理解 生者們慣用的語言[02:05.33]我曾在童話中哭泣 聲嘶力竭[02:10.54]那一天謊言摧毀了 善惡的邊界[02:15.84]對暴虐跪獻上尊嚴 乞求諒解[02:21.12]只渴望靈魂能從這空白中被赦免[02:47.97]如果我能單純愛上一片樹葉[02:53.13]是否就能做到再次愛上這個世界[03:00.43]。。。。。。。。
。。。。。。。。
循環好幾遍
int bytes = in.read(buf,0,buf.length) 【方法原貌:read(byte[] b, int off, int len)】?
題主可能不小心把off=0當作是讀取的文件in的偏移量了,其實仔細看下off=0是字節數組buf的偏移量,他表示的是字節數組從buf[0]開始存儲in讀出來的字節
所以當文件大于指定的字節數組大?。ㄗx取的文件比定義的buf空間還大)的時候,他會循環重新從buf[0]開始重頭存儲in讀出來的字節(所以視屏中每read完一次,就處理讀取完的數據buf),直到返回EOF(結尾)-1為止
舉報
為您介紹IO流的使用,以及對象的序列化和反序列化的內容
2 回答關于字節數組讀取文件
2 回答使用while循環,能夠讀完大于字節數組長度的文件嗎?如何實現的?
1 回答我用printByByteArray方法,字節數組不足夠大怎么也是讀取整個文件?
4 回答老師這里創建字節數組循環讀取大文件是不是有bug呢?
4 回答單字節讀取時Integer.toHexString(b) 批量讀取時Integer.toHexString(buf[i]&0xff)
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2016-04-20
int bytes = in.read(buf,0,buf.length);這個返回值,是你讀到的實際個數,例如:你buf new的事1024,但是你文件中只要100個,bytes就= 100;如果文件超過1024字節,一次讀會返回1024,第二次讀的時候,指針從1024再開始讀,每次1024個字節讀,知道讀完,所以bytes 返回值,要么是1024,要么是最后一次讀到數據,但是不足1024,返回實際值,再讀一次 就是EOF(結尾),返回-1
2016-07-03
不足1024的話它循環讀取,郁悶? 你幫我看下
我讀一個歌詞,下邊是結果
[00:03.72]作詞 : 雨貍
[00:05.84]作曲 : DELA
[00:07.60]如果某一個時間 我能愛上一片樹葉
[00:13.16]那么某一個未來 我也能愛上某個人
[00:18.60]他或讀著海子的詩篇 或者遙遠 遠在天邊
[00:23.84]在某一個劇情轉折點 帶我前往明天
[00:29.17]我曾在悲傷中流連 無法忘卻
[00:34.45]那一天現實與夢想無情地被撕裂
[01:22.45]色彩于我不過無物 晝與夜失去了區別
[01:27.81]卻看得見塵霾顛簸 行走著空心的枯骨
[01:33.25]終日畏懼陌生的視線 熟悉畫面 活的一切
[01:38.55]恨的情感最終也干癟 在朝霞口中奄奄
[01:43.62]誰看見我的黑夜 有無數的禿鷲在盤旋
[01:53.22]荒涼的墳場地 予我安眠
[01:59.18]無法理解 生者們慣用的語言
[02:05.33]我曾在童話中哭泣 聲嘶力竭
[02:10.54]那一天謊言摧毀了 善惡的邊界
[02:15.84]對暴虐跪獻上尊嚴 乞求諒解
[02:21.12]只渴望靈魂能從這空白中被赦免
[02:47.97]如果我能單純愛上一片樹葉
[02:53.13]是否就能做到再次愛上這個世界
[03:00.43]
。。。。。。。。
。。。。。。。。
。。。。。。。。
循環好幾遍
2016-04-21
int bytes = in.read(buf,0,buf.length) 【方法原貌:read(byte[] b, int off, int len)】?
題主可能不小心把off=0當作是讀取的文件in的偏移量了,其實仔細看下off=0是字節數組buf的偏移量,他表示的是字節數組從buf[0]開始存儲in讀出來的字節
所以當文件大于指定的字節數組大?。ㄗx取的文件比定義的buf空間還大)的時候,他會循環重新從buf[0]開始重頭存儲in讀出來的字節(所以視屏中每read完一次,就處理讀取完的數據buf),直到返回EOF(結尾)-1為止