欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java字節(jié)緩沖流原理與用法詳解

 更新時(shí)間:2019年09月10日 08:42:26   作者:cakincqm  
這篇文章主要介紹了Java字節(jié)緩沖流原理與用法,結(jié)合實(shí)例形式總結(jié)分析了java字節(jié)流與緩沖區(qū)相關(guān)原理與操作技巧,需要的朋友可以參考下

本文實(shí)例講述了Java字節(jié)緩沖流原理與用法。分享給大家供大家參考,具體如下:

一 介紹

BufferInputStresm和BufferOutputStream
這兩個(gè)流類為IO提供了帶緩沖區(qū)的操作,一般打開文件進(jìn)行寫入或讀取操作時(shí),都會(huì)加上緩沖,這種流模式提高了IO的性能。

二 各類中方法比較

從應(yīng)用程序中把輸入放入文件,相當(dāng)于將一缸水倒入另外一個(gè)缸中:
FileOutputStream的write方法:相當(dāng)于一滴一滴地把水“轉(zhuǎn)移過去。
DataOutputStream的writeXXX方法:相當(dāng)于一瓢一瓢地把水轉(zhuǎn)移過去。
BufferOutputStream的write方法:相當(dāng)于一瓢一瓢先把水放入的桶中,再將桶中的水倒入缸中,性能提高了。

三 應(yīng)用——帶緩沖區(qū)的拷貝

/**
 * 進(jìn)行文件的拷貝,利用帶緩沖的字節(jié)流
 * @param srcFile
 * @param destFile
 * @throws IOException
 */
public static void copyFileByBuffer(File srcFile,File destFile)throws IOException{
    if(!srcFile.exists()){
        throw new IllegalArgumentException("文件:"+srcFile+"不存在");
    }
    if(!srcFile.isFile()){
        throw new IllegalArgumentException(srcFile+"不是文件");
    }
    BufferedInputStream bis = new BufferedInputStream(
            new FileInputStream(srcFile));
    BufferedOutputStream bos = new BufferedOutputStream(
            new FileOutputStream(destFile));
    int c ;
    while((c = bis.read())!=-1){
        bos.write(c);
        bos.flush();//刷新緩沖區(qū)
    }
    bis.close();
    bos.close();
}

四 應(yīng)用——單字節(jié),不帶緩沖的拷貝

/**
 * 單字節(jié),不帶緩沖進(jìn)行文件拷貝
 * @param srcFile
 * @param destFile
 * @throws IOException
 */
public static void copyFileByByte(File srcFile,File destFile)throws IOException{
    if(!srcFile.exists()){
        throw new IllegalArgumentException("文件:"+srcFile+"不存在");
    }
    if(!srcFile.isFile()){
        throw new IllegalArgumentException(srcFile+"不是文件");
    }
    FileInputStream in = new FileInputStream(srcFile);
    FileOutputStream out = new FileOutputStream(destFile);
    int c ;
    while((c = in.read())!=-1){
        out.write(c);
        out.flush();
    }
    in.close();
    out.close();
}

五 測(cè)試——各種拷貝比較

package com.imooc.io;
import java.io.File;
import java.io.IOException;
public class IOUtilTest4 {
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        try {
            long start = System.currentTimeMillis();
            IOUtil.copyFileByByte(new File("e:\\javaio\\demo.mp3"), new File(
                    "e:\\javaio\\demo2.mp3")); //兩萬多毫秒
            long end = System.currentTimeMillis();
            System.out.println(end - start );
            start = System.currentTimeMillis();
            IOUtil.copyFileByBuffer(new File("e:\\javaio\\demo.mp3"), new File(
                    "e:\\javaio\\demo3.mp3"));//一萬多毫秒
            end = System.currentTimeMillis();
            System.out.println(end - start );
            start = System.currentTimeMillis();
            IOUtil.copyFile(new File("e:\\javaio\\demo.mp3"), new File(
                    "e:\\javaio\\demo4.mp3"));//7毫秒
            end = System.currentTimeMillis();
            System.out.println(end - start );
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

六 測(cè)試結(jié)果

13091
9067
10

更多java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java面向?qū)ο蟪绦蛟O(shè)計(jì)入門與進(jìn)階教程》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總

希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • JavaAPI的使用方法詳解

    JavaAPI的使用方法詳解

    這篇文章主要介紹了JavaAPI的使用方法詳解,還是比較不錯(cuò)的,這里分享給大家,供需要的朋友參考。
    2017-11-11
  • java實(shí)現(xiàn)二分法的完整代碼

    java實(shí)現(xiàn)二分法的完整代碼

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)二分法的完整代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • java控制臺(tái)輸出版多人聊天室

    java控制臺(tái)輸出版多人聊天室

    這篇文章主要為大家詳細(xì)介紹了java控制臺(tái)輸出版多人聊天室,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • Springboot如何統(tǒng)一處理Filter異常

    Springboot如何統(tǒng)一處理Filter異常

    這篇文章主要介紹了Springboot如何統(tǒng)一處理Filter異常問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • java文件操作之Path,Paths,Files

    java文件操作之Path,Paths,Files

    Java7中文件IO發(fā)生了很大的變化,專門引入了很多新的類,下面給大家分享用Files作為一個(gè)操作類的實(shí)例,需要的朋友可以參考
    2017-04-04
  • Java中final與繼承操作實(shí)例分析

    Java中final與繼承操作實(shí)例分析

    這篇文章主要介紹了Java中final與繼承操作,結(jié)合實(shí)例形式分析了Java中使用final阻止繼承的相關(guān)原理與操作注意事項(xiàng),需要的朋友可以參考下
    2019-09-09
  • Java中的String對(duì)象數(shù)據(jù)類型全面解析

    Java中的String對(duì)象數(shù)據(jù)類型全面解析

    首先String不屬于8種基本數(shù)據(jù)類型,String是一個(gè)對(duì)象,因?yàn)閷?duì)象的默認(rèn)值是null,所以String的默認(rèn)值也是null;但它又是一種特殊的對(duì)象,有其它對(duì)象沒有的一些特性
    2012-11-11
  • Java實(shí)現(xiàn)動(dòng)態(tài)日歷效果

    Java實(shí)現(xiàn)動(dòng)態(tài)日歷效果

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)動(dòng)態(tài)日歷效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • SpringBoot啟動(dòng)及自動(dòng)裝配原理過程詳解

    SpringBoot啟動(dòng)及自動(dòng)裝配原理過程詳解

    這篇文章主要介紹了SpringBoot啟動(dòng)及自動(dòng)裝配原理過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • springboot如何通過URL方式訪問外部資源

    springboot如何通過URL方式訪問外部資源

    這篇文章主要介紹了springboot如何通過URL方式訪問外部資源,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12

最新評(píng)論