溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java輸入和輸出的介紹及使用

發布時間:2021-06-24 11:18:14 來源:億速云 閱讀:134 作者:chen 欄目:大數據

本篇內容主要講解“java輸入和輸出的介紹及使用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“java輸入和輸出的介紹及使用”吧!

在java輸入輸出專題--第一部分中了解到對于讀取數據的效率而言,BufferedInputStream要比FileInputStream高效。但是這個結論不是一直成立的,代碼如下:

private static void bufferedInputStreamTest() throws Exception {

FileInputStream in = new FileInputStream(new File("data"));

BufferedInputStream bin = new BufferedInputStream(in);

byte[] buf = new byte[1024];

int readCount = -1;

long totalCount = 0;

long start = System.currentTimeMillis();

while ((readCount = bin.read(buf)) != -1) {

totalCount += readCount;

}

long end = System.currentTimeMillis();

System.out.println("讀?。?quot; + totalCount + "個字節,耗時:" + (end - start));

bin.close();

}

private static void inputStreamTest() throws Exception {

FileInputStream in = new FileInputStream(new File("data"));

byte[] buf = new byte[1024];

int readCount = -1;

long totalCount = 0;

long start = System.currentTimeMillis();

while ((readCount = in.read(buf)) != -1) {

totalCount += readCount;

}

long end = System.currentTimeMillis();

System.out.println("讀?。?quot; + totalCount + "個字節,耗時:" + (end - start));

in.close();

}

請看測試結果:

1、當buf為1024字節時

BufferedInputStream讀?。?073741824個字節,耗時:613

FileInputStream讀?。?073741824個字節,耗時:1804

2、當buf為2048字節時

    BufferedInputStream讀?。?073741824個字節,耗時:625

FileInputStream讀?。?073741824個字節,耗時:1154

3、當buf為4096字節時

BufferedInputStream讀?。?073741824個字節,耗時:640

FileInputStream讀?。?073741824個字節,耗時:770

4、當buf為8192字節時

   BufferedInputStream讀?。?073741824個字節,耗時:549

FileInputStream讀?。?073741824個字節,耗時:569

5、當buf為16384字節時

BufferedInputStream讀?。?073741824個字節,耗時:575

FileInputStream讀?。?073741824個字節,耗時:504

6、當buf為32768字節時

BufferedInputStream讀?。?073741824個字節,耗時:398

FileInputStream讀?。?073741824個字節,耗時:396

所以最后的結論是當buf的大小逐漸增大的時候,它們之間的效率差異會越來越??;甚至當buf大小為16384時FileInputStream的讀取效率還稍微高于BufferedInputStream。(該測試在windows8下進行)

原因如下:windows操作系統對文件的管理是按照簇為基本單位,本機的簇大小為4096個字節(可通過chkdsk命令查看)。當buf大小小于4096時,FileInputStream相當于要對同一個簇多次(4096/緩存區大?。┳x?。▽Υ氐淖x取涉及到系統調用),而BufferedInputStream內部有一個默認8192個節點的緩沖區,當buf大小小于4096時,不會涉及到系統調用,而是直接從內存BUF里面獲取數據。當buf大小大于4096時兩者差異立刻減少,主要還是因為對系統調用的次數相當!

到此,相信大家對“java輸入和輸出的介紹及使用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女