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

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

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

瀏覽:39日期: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久久,三上悠亚国产精品一区二区三区
国产伦精品一区二区三区千人斩| 亚洲小说春色综合另类电影| 日韩三级精品| 国产亚洲精品美女久久久久久久久久| 欧美日本久久| 精品视频一区二区三区在线观看| 国产精品精品| 黑丝美女一区二区| 一区二区高清| 国产黄色精品| 久久久精品网| 亚洲欧洲日韩精品在线| 日韩精品久久久久久久软件91| 国产精品主播| 好看不卡的中文字幕| 国产综合精品| 日本在线不卡视频| 日本免费久久| 亚洲日本三级| 日韩中文在线电影| 日本午夜精品一区二区三区电影| 国产盗摄——sm在线视频| 午夜亚洲一区| 精品理论电影在线| 亚洲理论在线| 欧美三区四区| 欧美日韩99| 好吊视频一区二区三区四区| 欧美国产免费| 国产精品嫩草99av在线| 91九色精品| 国产精久久一区二区| 99视频精品免费观看| 国产精品17p| 国产亚洲永久域名| 精品亚洲美女网站| 国产欧美午夜| 在线精品亚洲| 亚洲作爱视频| 欧美成人基地| 国产精品嫩草影院在线看| 91精品高清| 国产麻豆久久| 久久青草久久| 久久久亚洲一区| 国产激情一区| 亚洲人成精品久久久| 亚洲欧美日韩在线观看a三区| 精品亚洲美女网站| 国产美女高潮在线| 成人精品国产亚洲| 91日韩欧美| 久久精品电影| 麻豆中文一区二区| 久久久国产精品网站| 日韩理论视频| 国产毛片一区| 一区二区不卡| 欧美亚洲一区二区三区| 精品国产乱码久久久久久1区2匹| 日韩高清成人在线| 精品国产鲁一鲁****| 欧美综合另类| 亚洲精品一级| 精品一区二区三区免费看| 日本欧美不卡| 日韩在线网址| 高清精品久久| 国产精品色网| 精品视频网站| 蜜臀久久99精品久久久久宅男| 欧美三级第一页| 久久久久久久久久久妇女| 日韩一区免费| 激情欧美日韩一区| 少妇高潮一区二区三区99| 国产suv精品一区| 亚洲欧洲免费| 国产成人精选| 国精品一区二区| 亚洲美女久久| caoporn视频在线| 亚洲欧美日韩国产综合精品二区 | 精品不卡一区| 美女少妇全过程你懂的久久| 亚洲免费观看高清完整版在线观| 麻豆国产一区| 麻豆9191精品国产| 国产欧美69| 久久精品主播| 国产精品成人国产| 日韩视频二区| 国产一区二区三区四区五区| 久久国产精品久久w女人spa| 久久精品国产网站| 亚洲va久久| 亚洲黄色在线| 91亚洲一区| 麻豆精品在线观看| 亚洲综合五月| 亚洲精品一二三区区别| 精品国产午夜肉伦伦影院| 亚洲制服欧美另类| 日韩欧美网址| 美女在线视频一区| 91亚洲精品在看在线观看高清| 99国产精品一区二区| 欧美aⅴ一区二区三区视频| 中文字幕一区二区三区四区久久| 色婷婷精品视频| 国产在线日韩精品| 国产精品一区二区三区四区在线观看 | 91精品99| 日韩和的一区二在线| 国产一区一一区高清不卡| 欧美视频精品全部免费观看| 亚洲影院天堂中文av色| 亚洲精品中文字幕乱码| 久久久777| 久久美女性网| 日韩av福利| 精品捆绑调教一区二区三区| 日韩av片子| 日韩久久电影| 日本高清不卡一区二区三区视频| 国产激情欧美| 国产aa精品| 电影亚洲精品噜噜在线观看| caoporn视频在线| 国产综合色区在线观看| 久久久久网站| 一区二区自拍| 综合激情一区| 国产精品久久久久久久免费软件| 国产视频一区二区在线播放| 麻豆久久一区二区| 国产精品二区不卡| 亚洲一级少妇| 久久香蕉精品| 欧美日韩18| 国产精品v日韩精品v欧美精品网站| 国产精品一区二区av日韩在线| 风间由美中文字幕在线看视频国产欧美 | 午夜视频精品| 欧美日韩xxxx| 丰满少妇一区| 午夜精品一区二区三区国产| 亚洲乱亚洲高清| 久久精品亚洲| 国产一区91| 精品精品国产三级a∨在线| 欧美亚洲国产一区| 日本成人在线一区| 国产精久久一区二区| 99久久久久国产精品| 亚洲精品一二三**| 深夜视频一区二区| 日韩欧美在线精品| 精品国模一区二区三区| 亚洲久久视频| 欧美日韩一二三四| 国产精品高潮呻吟久久久久| 欧美色图一区| 久久精品资源| 日韩1区2区3区| 久久精品123| 欧美激情网址| 蜜桃久久久久久久| 国产成人精品一区二区三区在线| 亚洲精品在线国产| 欧美日韩国产欧| 日韩欧美三级| 免费亚洲婷婷| 国产精品欧美日韩一区| 亚洲视频电影在线| 亚洲欧洲日本mm| 99成人在线视频| 另类专区亚洲| 久久精品网址| 国产精品www.| 国产精品多人| 国产日韩中文在线中文字幕| 国产亚洲亚洲| 另类中文字幕国产精品| 成年男女免费视频网站不卡| 国产精品手机在线播放| 亚洲精品自拍| 综合欧美亚洲| 中文字幕日韩高清在线| 只有精品亚洲| 日本成人在线一区| 国产香蕉精品| 麻豆精品久久| 成人国产精品久久| 国产高清不卡| 欧美性感美女一区二区| 国产精品91一区二区三区| 国产亚洲精品v| 国产视频久久| 亚洲精品第一|