日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Java 輸入流中的read(byte[] b)方法詳解

瀏覽:33日期:2022-08-18 09:03:24

我就廢話不多說了,大家還是直接看代碼吧~

public int read(byte[] b) throws IOException

從一個輸入流中讀取一定數量的字節,并將這些字節存儲到其緩沖作用的數組b中。這個函數會返回一次性讀取的字節數。

這個函數是一個阻塞式的函數,當它讀到有效數據、確認的文件尾(EOF)或者拋出一個異常時它才會執行其他語句,否則一直停在read()函數處等待。

比如下面的列子:

ServerSocket server = new ServerSocket(port)Socket client = server.accept();BufferedInputStream bis = new BufferedInputStream(client.getInputStream);

byte[] box = new byte[1024];int len = 0;while(-1!=(len = bis.read(box))) { System.out.println(len); String msg = new String(box, 0, len);}語句1;語句二;

在這種情況下,當從客戶端接收了一條信息并轉成msg字符串后,while循環會又回到read()函數,不會跳出循環執行語句一和二。

因為這時read()函數并沒有遇到文件尾或者拋出異常,所以下一次while條件判斷read()函數會一直等待有效數據的輸入,而不是返回-1。此時整個程序將會阻塞在這里。

如果我們是從文件用這個函數以這種while循環方式讀取數據的話并不會遇到這個問題,因為讀到最后會遇到EOF的。

如果用這種方式讀取控制臺的輸入的話,我們可以選擇不要while循環。或者設置條件跳出循環,即如果len小于box的長度話就跳出循環。

我們還可以選擇用DataInputStream的readUTF()函數也可以。還有就是我們可以采用監聽機制,當監聽到輸入流中有數據之后再讀取。

補充:教你完全理解IO流里的 read(),read(byte[]),read(byte[],int off,int len)以及write

好的我們先來講它們的作用,然后再用代碼來實現給大家看

read():

1.從讀取流讀取的是一個一個字節

2.返回的是字節的(0-255)內的字節值

3.讀一個下次就自動到下一個,如果碰到-1說明沒有值了.

read(byte[] bytes)

1.從讀取流讀取一定數量的字節,如果比如文件總共是102個字節

2.我們定義的數組長度是10,那么默認前面10次都是讀取10個長度

3.最后一次不夠十個,那么讀取的是2個

4.這十一次,每次都是放入10個長度的數組.

read(byte[] bytes,int off ,int len)

1.從讀取流讀取一定數量的字節,如果比如文件總共是102個字節

2.我們定義的數組長度是10,但是這里我們寫read(bytes,0,9)那么每次往里面添加的(將只會是9個長度),就要讀12次,最后一次放入3個.

3.所以一般讀取流都不用這個而是用上一個方法:read(byte[]);

下面講解write

write(int i);

直接往流寫入字節形式的(0-255)int值.

write(byte[] bytes);

往流里邊寫入緩沖字節數組中的所有內容,不滿整個數組長度的”空余內容”也會加入,這個下面重點講,

write(byte[] bytes,int off,int len);

1.這個是更嚴謹的寫法,在外部定義len,然后每次len(為的是最后一次的細節長度)都等于流往數組中存放的長度

2.如上述read(bytes),前面每次都放入十個,第十一次放入的是2個,如果用第二種write(bytes),將會寫入輸出流十一次,每次寫入十個長度,造成后面有8個空的,比原來的內容多了

3.所以用write(byte[] bytes,int off,int len);就不會出現多出來的空的情況,因為最后一次len不同

下面是詳細的代碼

public class Test{ public static void main(String[] args) throws Exception { UseTimeTool.getInstance().start(); FileInputStream fis = new FileInputStream('D:1.mp3'); FileOutputStream fos = new FileOutputStream('D:1copy.mp3'); //(PS:一下3個大家分開來寫和測試,為了方便我都列出來了) /*--------------不使用緩沖--------------*/ //如果不緩沖,花了差不多14'秒' int len = -1; while ((len = fis.read()) != -1) { //這里就不是長度的問題了,而是讀取的字節'內容',讀到一個寫一個,相當慢. System.out.println('len : '+ len); fos.write(len); } /*--------------使用緩沖--------------*/ //緩沖方法復制歌曲用了不到20'毫秒' //創建一個長度為1024的字節數組,每次都讀取5kb,目的是緩存,如果不用緩沖區,用fis.read(),就會效率低,一個一個讀字節,緩沖區是一次讀5000個 byte[] bytes = new byte[1024*5]; //每次都是從讀取流中讀取(5k)長度的數據,然后再寫到文件去(5k的)數據,注意,每次讀取read都會不同,是獲取到下一個,直到后面最后一個. while (fis.read(bytes)!=-1) { //write是最追加到文件后面,所以直接每次添5K. fos.write(bytes); } /*--------------解釋len--------------*/ //告訴你為什么用len byte[] bytes = new byte[1024*5]; int len = -1; //解釋這個fis.read(bytes)的意思:從讀取流'讀取數組長度'的數據(打印len可知),并放入數組 while ((len = fis.read(bytes,0,1024)) != -1) { //雖然數組長度的*5,但是這里我們設置了1024所以每次輸出1024 System.out.println('len : '+ len); //因為每次得到的是新的數組,所以每次都是新數組的'0-len' fos.write(bytes,0,len); } fis.close(); fos.close(); UseTimeTool.getInstance().stop(); }}

為了方便大家,也給大家一個統計時間的工具類

class UseTimeTool { private static UseTimeTool utt = new UseTimeTool(); private UseTimeTool() { } public static UseTimeTool getInstance() { return utt; } private long start; public void start() { start = System.currentTimeMillis(); } public void stop() { long end = System.currentTimeMillis(); System.out.println('所用?r? : ' + (end - start) + '毫秒'); }}

好了最后一個:len問題 最后多出數組不滿的部分我特再寫一個出來給大家分析

首先,文本的內容是

Java 輸入流中的read(byte[] b)方法詳解

public class Test{ public static void main(String[] args) throws Exception { UseTimeTool.getInstance().start(); FileInputStream fis = new FileInputStream('D:a.txt'); FileOutputStream fos = new FileOutputStream('D:acopy.txt');

不使用len:

byte[] bytes = new byte[1024*5]; while (fis.read(bytes)!=-1) { fos.write(bytes); }

得到的效果:

Java 輸入流中的read(byte[] b)方法詳解

發現后續后很多的空部分,所以說不嚴謹

使用len:

byte[] bytes = new byte[1024*5]; int len = -1; while ((len = fis.read(bytes,0,1024)) != -1) { fos.write(bytes,0,len); }

得到的效果

Java 輸入流中的read(byte[] b)方法詳解

和原來一模一樣,講了那么多就是希望能幫助大家真正的理解。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。如有錯誤或未考慮完全的地方,望不吝賜教。

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
性欧美xxxx免费岛国不卡电影| 九九九精品视频| 激情综合婷婷| 国产伦理久久久久久妇女| 国产精品高潮呻吟久久久久| 久久一区视频| 日韩.com| 免费国产自久久久久三四区久久 | 日韩综合一区二区三区| 免费在线日韩av| 久久国产电影| 日韩精品一级中文字幕精品视频免费观看 | 午夜av不卡| 偷拍精品精品一区二区三区| 99久久精品网站| 美国欧美日韩国产在线播放| 欧美日韩一区二区高清| 麻豆精品视频在线观看视频| 国产福利电影在线播放| 激情综合网五月| 爽好久久久欧美精品| 欧美日韩一区二区三区四区在线观看| 久久亚州av| 亚洲第一精品影视| 亚洲精品一二| 久久的色偷偷| 日韩免费福利视频| 男女精品网站| 日韩成人一级| 国产一区国产二区国产三区 | 国产欧美视频在线| 亚洲播播91| 婷婷亚洲精品| 四季av一区二区凹凸精品| 亚洲免费激情| 国产精品一区二区三区美女| 巨乳诱惑日韩免费av| 国产精品亚洲欧美一级在线| 亚洲精品1区| av中文字幕在线观看第一页| 热久久国产精品| 超碰超碰人人人人精品| 国产精品三级| 一二三区精品| 蜜桃tv一区二区三区| 国产一区二区三区网| 日韩精品视频网| 一区二区自拍| 日韩毛片视频| 精品视频91| 群体交乱之放荡娇妻一区二区| 婷婷激情一区| 国产三级精品三级在线观看国产| 亚洲91视频| 国产极品模特精品一二| 免费国产自久久久久三四区久久 | 日产精品一区| 欧美在线91| 好吊日精品视频| 久久不见久久见免费视频7| 99视频精品免费观看| 国产传媒在线| 国产欧美一区二区三区国产幕精品| 久久三级视频| 久久超级碰碰| 中文字幕av一区二区三区人 | 麻豆久久一区| 亚洲一区有码| 国产一区日韩欧美| 久久亚洲人体| 日韩精品免费视频人成| 亚洲国产日韩欧美在线| 久久免费精品| 日韩精品欧美大片| 欧美日韩国产传媒| 97精品中文字幕| 久久国产三级精品| 蜜臀91精品一区二区三区| 亚洲a在线视频| 精品久久久网| 日韩精品视频网站| 国产精品女主播一区二区三区| 97精品一区| 欧美国产免费| 欧美日本不卡高清| 一区二区三区国产在线| 午夜久久99| 亚洲性色视频| 日韩欧美三级| 久久中文欧美| 欧美在线精品一区| 香蕉成人久久| 亚洲免费激情| 亚洲午夜黄色| 日韩高清不卡| 麻豆精品视频在线观看视频| 日韩二区在线观看| 亚洲伊人影院| 亚洲一区二区三区高清不卡| 国产一区清纯| 亚洲午夜av| 香蕉久久99| 四虎4545www国产精品| 国产高潮在线| 国产在线看片免费视频在线观看| 欧美aaaaaa午夜精品| 国产日本精品| 国产剧情一区二区在线观看| 91嫩草精品| 国产亚洲久久| 日韩va欧美va亚洲va久久| 日韩激情一区二区| 日韩激情视频网站| 欧美日韩中出| 国产精品任我爽爆在线播放| 国产精品v一区二区三区| 久久99久久久精品欧美| 久久精品福利| 成人国产精品一区二区网站| 最新中文字幕在线播放| 欧美日韩精品免费观看视完整 | 亚洲不卡视频| 亚洲综合中文| 中文字幕一区二区三区日韩精品| 亚洲色图网站| 日韩高清成人在线| 国产精品美女久久久久久不卡| 99久久九九| 日韩在线中文| 亚洲一区av| 国产一区二区三区黄网站| 欧美成人高清| 日韩不卡一区二区| 日韩精品诱惑一区?区三区| 国产精品毛片在线| 久久激情五月婷婷| 午夜av成人| 9久re热视频在线精品| 日韩av在线播放中文字幕| 国产精品成人a在线观看| 国产日韩专区| 久久免费影院| 国产精品视区| 欧美黄色一区| 91欧美在线| 黄色欧美日韩| 91成人福利| 国产粉嫩在线观看| 最新亚洲一区| 日韩高清欧美激情| 国产精品成久久久久| 91久久久精品国产| 伊人www22综合色| 老司机精品视频网| 99精品在线观看| 婷婷亚洲精品| 97精品视频在线看| 久久夜色精品| 免费看一区二区三区| 亚洲精品.com| 亚洲香蕉久久| 国产一区二区三区天码| av亚洲在线观看| 久久国内精品| 在线视频观看日韩| 国产女人18毛片水真多18精品| 播放一区二区| 中文字幕av一区二区三区四区| 麻豆久久一区| 在线综合亚洲| 久久久91麻豆精品国产一区| 精品1区2区3区4区| 国产精品扒开腿做爽爽爽软件| 婷婷激情久久| 国产精品magnet| 亚洲综合精品| 国产一区二区三区黄网站 | 欧美手机在线| 国产日韩一区二区三区在线| 欧洲亚洲一区二区三区| 日韩动漫一区| 久久91导航| 日韩精品欧美成人高清一区二区| 亚洲最新无码中文字幕久久| 亚洲免费专区| 在线视频观看日韩| 国产精品2023| 美国三级日本三级久久99 | 五月天久久久| 精品一区二区三区视频在线播放| 国产一区导航| 综合日韩av| 日本精品另类| 91精品1区| 国产成人精品一区二区三区免费 | 91成人精品视频| 热久久国产精品| 国产一二在线播放| 欧美日韩亚洲国产精品| 99re国产精品|