使用缓冲字节流:BufferedInputStream与BufferedOutputStream读写数据
生活随笔
收集整理的這篇文章主要介紹了
使用缓冲字节流:BufferedInputStream与BufferedOutputStream读写数据
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
功能邏輯:將一個視頻文件通過緩沖字節輸入流進行讀取,然后再通過緩沖字節輸出流將其重新拷貝輸出。
public static void main(String[] args) {try {FileInputStream fis = new FileInputStream("Rick_and_Morty.mkv");//第二個參數指定了緩沖區的size,根據實際的執行時間可以優化這個數字。BufferedInputStream bis = new BufferedInputStream(fis,1000000);FileOutputStream fos = new FileOutputStream("Rck.mkv");BufferedOutputStream bos = new BufferedOutputStream(fos,1000000);//byte數組會先從緩沖區取得數據,大型文件對應的數據可以大一些,小文件對應的數組可以小一些。byte[] input = new byte[1000000];int count = 0;long before = System.currentTimeMillis();//while循環讀取視頻文件,-1代表已經將文件的字節流全部讀取了,!=-1則文件繼續讀取while (bis.read(input) != -1) {bos.write(input);count++;}//輸入流一組,輸出流一組,先打開的流后關閉bis.close();fis.close();bos.close();fos.close();long after = System.currentTimeMillis();System.out.println("讀取時間為:" + (after - before) + "ms");System.out.println("訪問磁盤:" + count + "次");} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}此例簡單的實現了一個視頻文件從輸入到輸出的過程,視頻文件大小為301,199,257 ?bytes,執行結果如下: 讀取時間為:450ms 訪問磁盤:302次
這是通過多次改變字節數組的大小和緩沖區初始大小得出的較優結果,在實際應用中,可以多次進行嘗試。
而且在實際應用中,帶緩沖的字節輸入輸出流性能要優于不帶緩沖區的字節輸入輸出流。
總結
以上是生活随笔為你收集整理的使用缓冲字节流:BufferedInputStream与BufferedOutputStream读写数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode算法入门- Roman
- 下一篇: Tomcat运行三种模式:http-bi