<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ### 簡單的說明 一般小的字節(byte)文件的讀取和寫入數據,我們使用FileInputStream和FileOutputStream類就可以實現了,但是對于大的字節(byte)文件的讀取和寫入數據,性能就會有很大的問題,我們一般選擇BufferedInputStream和BufferedOutputStream來處理,也就是說BufferedInputStream和BufferedOutputStream主要的目的是提高字節(byte)文件的內容讀取和寫入的性能。 ### BufferedInputStream和BufferedOutputStream ### BufferedInputStream類 構造方法: BufferedInputStream(InputStream in) 創建一個有32字節的緩存區 BufferedInputStream(InputStream in, int size) 創建一個有size大小字節的緩存區 關鍵方法: read() read(byte[] buffer, int byteOffset, int byteCount) 常用使用方式: ~~~ BufferedInputStream buf = new BufferedInputStream(new FileInputStream("file.java")); ~~~ ### BufferedOutputStream類 構造方法: BufferedOutputStream(OutputStream out) BufferedOutputStream(OutputStream out, int size) 關鍵方法: write(int oneByte) write(byte[] buffer, int offset, int length) flush() 主要是用來把緩存區的數據刷新到文件中去 常用使用方式: ~~~ BufferedOutputStream buf = new BufferedOutputStream(new FileOutputStream("file.java")); ~~~ ### 一個測試的Demo 定義三個方法: (1)testBufferedInputStream方法—讀取文件內容 BufferedInputStream的使用方法: ~~~ //1.創建一個輸入字符文件 //2.定義一個輸入流FileInputStream //3.定義一個BufferedInputStream //4.輸入操作 //5.關閉對應的流,注意,可以只關閉最外面的流 ~~~ (2)testBufferedOutputStream方法—-往文件寫內容 BufferedOutputStream的使用方法: ~~~ //1.創建一個File文件 //2.定義一個輸出流 //3.定義一個BufferedOutputStream //4.輸出操作 //5.關閉對應的流,注意,可以只關閉最外面的流 ~~~ (3)copyFile方法—-復制文件的方法 ~~~ //1.定義輸入和輸出的文件 //2.定義二個輸入輸出流 //3.定義二個輸入輸出緩存流 //4.實現復制功能 //5.關閉對應的流,緩存流的時候,可以只關閉對應的緩存流就可以,先關輸出緩存流,再關輸入緩存流 ~~~ ~~~ import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class BufferedInputStreamBufferedOutputStream { //使用BufferedInputStream和BufferedOutputStream,實現文件的復制功能 public static void copyFile(String src,String des,int lenByte){ //3.定義二個輸入輸出緩存流 BufferedInputStream bis = null; BufferedOutputStream bos = null; try { //1.定義輸入和輸出文件 File fin = new File(src); File fout = new File(des); //2.定義二個輸入輸出流 FileInputStream fis = new FileInputStream(fin); FileOutputStream fos = new FileOutputStream(fout); bis = new BufferedInputStream(fis); bos = new BufferedOutputStream(fos); //4.實現復制功能 byte[] b = new byte[lenByte]; int len; while((len = bis.read(b))!= -1){ bos.write(b, 0, len); bos.flush(); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ //5.關閉對應的流,緩存流的時候,可以只關閉對應的緩存流就可以,先關輸出緩存流,再關輸入緩存流 if (bos != null) { try { bos.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if (bis != null) { try { bis.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } //BufferedOutputStream使用樣例 public static void testBufferedOutputStream(){ //3.定義一個BufferedOutputStream BufferedOutputStream bos = null; try { //1.定義輸出File //File fin = new File("music_01.mp3"); File fout = new File("BufferedOutputStream.txt"); //2.定義一個輸出流 FileOutputStream fos = new FileOutputStream(fout); bos = new BufferedOutputStream(fos); //4.輸出操作 String str = "BufferedOutputStream使用樣例"; bos.write(str.getBytes()); fos.flush(); }catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); }finally{ //5.關閉對應的流,注意,可以只關閉最外面的流 if(bos != null){ try { bos.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } //BufferedInputStream使用樣例 public static void testBufferedInputStream(){ //3.定義一個BufferedInputStream BufferedInputStream bis = null; try { //1.定義輸入File //File fin = new File("music_01.mp3"); File fin = new File("hello.txt"); //2.定義一個輸入流 FileInputStream fis = new FileInputStream(fin); bis = new BufferedInputStream(fis); //4.輸入操作 byte[] b = new byte[16]; int len; while((len = bis.read(b)) != -1){ System.out.println(new String(b, 0,len)); } }catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); }finally{ //5.關閉對應的流,注意,可以只關閉最外面的流 if(bis != null){ try { bis.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } } ~~~ 調用: ~~~ //BufferedInputStream使用樣例 BufferedInputStreamBufferedOutputStream.testBufferedInputStream(); //BufferedOutputStream使用樣例 BufferedInputStreamBufferedOutputStream.testBufferedOutputStream(); //使用BufferedInputStream和BufferedOutputStream,實現文件的復制功能 long t1 = System.currentTimeMillis(); BufferedInputStreamBufferedOutputStream.copyFile("music_01.mp3","music_02.mp3",1024);//10M大小的音樂 long t2 = System.currentTimeMillis(); System.out.print("復制文件消耗的時間:"+(t2 - t1));//10-4437 100-431 1024-60 ~~~ 說明: 測試來復制一個10M大小的音樂文件(music_01.mp3),使用緩存流在一次復制10byte時要4437毫秒,一次復制100byte時要431毫秒,一次復制1024byte時要60毫秒。 參考資料: 1.BufferedOutputStream api文檔 android_sdk_docs_offline/reference/java/io/BufferedOutputStream.html 2.BufferedInputStream文檔 android_sdk_docs_offline/reference/java/io/BufferedInputStream.html 3.BufferedOutputStream與BufferedInputStream視頻 [http://edu.csdn.net/course/detail/805/10967?auto_start=1](http://edu.csdn.net/course/detail/805/10967?auto_start=1)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看