成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

文件的拷貝、字節(jié)流的緩沖區(qū)、BufferedInputStream類

開發(fā) 前端
本文主要介紹了文件的拷貝、字節(jié)流的緩沖區(qū)、BufferedInputStream類。文件的拷貝是輸入流來讀取文件的數(shù)據(jù),通過輸出流把數(shù)據(jù)寫入文件。字節(jié)流的緩沖區(qū)創(chuàng)建一個字節(jié)數(shù)組來保存一次性讀取多個字節(jié)的數(shù)據(jù),再把字節(jié)數(shù)組中的數(shù)據(jù)一次性寫入文件。
大家好,我是Java進(jìn)階者。

前言

本文主要學(xué)習(xí)文件的拷貝、字節(jié)流的緩沖區(qū)、BufferedInputStream類。讀取文件如果一個一個的讀寫,這樣的操作文件效率太低,通過學(xué)習(xí)字節(jié)流的緩沖區(qū)通過一個字節(jié)數(shù)組來讀取多個字節(jié)的數(shù)據(jù),再把字節(jié)數(shù)組的數(shù)據(jù)一次性的寫入文件中。接下來小編帶大家一起來學(xué)習(xí)!

一、文件的拷貝

1.文件的拷貝是通過輸入流來讀取文件的數(shù)據(jù),通過輸出流把數(shù)據(jù)寫入文件。怎么進(jìn)行文件復(fù)制的呢?使用FileInputStream類與FileOutputStream類復(fù)制文件。

2.首先在text文件夾下創(chuàng)建一個test06.txt文件,并寫入內(nèi)容為“Java進(jìn)階學(xué)習(xí)交流001、Java進(jìn)階學(xué)習(xí)交流002、Java進(jìn)階學(xué)習(xí)交流003”,如下圖所示:

3.代碼實現(xiàn)文件的拷貝如下所示:

  1. import java.io.*; 
  2. public class P06 { 
  3. public static void main(String[] args) throws Exception { 
  4.         // TODO Auto-generated method stub 
  5.         //創(chuàng)建一個字節(jié)輸入流,讀取text文件夾下test06.txt數(shù)據(jù) 
  6.         InputStream in = new FileInputStream("text/test06"); 
  7.         //創(chuàng)建一個字節(jié)輸出流,用來讀取數(shù)據(jù)并在text文件夾下創(chuàng)建一個test07.txt文件 
  8.         OutputStream out = new FileOutputStream("text/test07"); 
  9.         int num;//定義個int類型的變量num,保存每次讀取的一個字節(jié) 
  10.         //復(fù)制文件前的系統(tǒng)時間 
  11.         long startTime=System.currentTimeMillis(); 
  12.         //while循環(huán)判斷讀取的一個字節(jié)是否讀到文件的末尾 
  13.         while((num=in.read())!=-1){ 
  14.             //讀到的數(shù)據(jù)寫到文件中 
  15.             out.write(num); 
  16.         } 
  17.         //復(fù)制文件后的系統(tǒng)時間 
  18.         long endTime=System.currentTimeMillis(); 
  19.         System.out.println("復(fù)制文件所使用的時間是:"+(endTime-startTime)+"毫秒"); 
  20.         //關(guān)閉流 
  21.         in.close(); 
  22.         out.close(); 
  23.   } 

運行的結(jié)果如下圖所示:

二、字節(jié)流的緩沖區(qū)

1.在實現(xiàn)文件拷貝時,如果一個個字節(jié)來讀寫,經(jīng)常操作文件這樣的效率太低了。首先創(chuàng)建一個字節(jié)數(shù)組來保存一次性讀取多個字節(jié)的數(shù)據(jù),再把字節(jié)數(shù)組中的數(shù)據(jù)一次性寫入文件。這里的緩沖區(qū)相當(dāng)字節(jié)數(shù)組!

2.如何使用緩沖區(qū)拷貝文件?

(1)首先在text文件夾下創(chuàng)建一個test08.txt文件,并寫入內(nèi)容為“HelloWorld,Java程序設(shè)計001!、HelloWorld,Java程序設(shè)計002!、HelloWorld,Java程序設(shè)計003!、HelloWorld,Java程序設(shè)計004!、HelloWorld,Java程序設(shè)計005!、HelloWorld,Java程序設(shè)計006!”,如下圖所示:

(2)代碼如下所示:

  1. import java.io.*; 
  2. public class P07 { 
  3. public static void main(String[] args) throws Exception { 
  4.         // TODO Auto-generated method stub 
  5.                 //創(chuàng)建一個字節(jié)輸入流,讀取text文件夾下test08.txt數(shù)據(jù) 
  6.                 InputStream in = new FileInputStream("text/test08"); 
  7.                 //創(chuàng)建一個字節(jié)輸出流,用來讀取數(shù)據(jù)并在text文件夾下創(chuàng)建一個test09.txt文件 
  8.                 OutputStream out = new FileOutputStream("text/test09"); 
  9.                 //定義字節(jié)數(shù)組使用緩存區(qū)讀寫文件數(shù)據(jù) 
  10.                 byte bt[]=new byte[1024]; 
  11.                 //定義一個int類型的變量num,保存讀取讀到緩沖區(qū)的字節(jié)數(shù) 
  12.                 int num; 
  13.                 //復(fù)制文件前的系統(tǒng)時間 
  14.                 long startTime=System.currentTimeMillis(); 
  15.                 //while循環(huán)判斷讀取的字節(jié)是否讀到文件的末尾 
  16.                 while((num=in.read(bt))!=-1){ 
  17.                     out.write(bt,0,num); 
  18.                 } 
  19.                 //復(fù)制文件后的系統(tǒng)時間 
  20.                 long endTime=System.currentTimeMillis(); 
  21.                 System.out.println("復(fù)制文件所使用的時間是:"+(endTime-startTime)+"毫秒"); 
  22.                 //關(guān)閉流 
  23.                 in.close(); 
  24.                 out.close(); 
  25.   } 

運行的結(jié)果如下圖所示:

上面代碼中主要實現(xiàn)了test08.txt文件的拷貝,拷貝過程中使用到了while循環(huán)將字節(jié)文件進(jìn)行拷貝,每循環(huán)一次在test08.txt文件中讀取很多個字節(jié)保存到數(shù)組中,通過變量num保存讀取的數(shù)組的字節(jié)數(shù),從數(shù)組的第一個字節(jié)開始,把num個字節(jié)寫到文件中,當(dāng)num值為-1,讀取文件就結(jié)束了。最終實現(xiàn)了文件之間的拷貝是通過字節(jié)流的緩沖區(qū)。

三、BufferedInputStream類

1.BufferedInputStream是緩沖輸入流,可以減少訪問磁盤的次數(shù),提高文件的讀取性能,它是FilterInputStream類的子類。

2.BufferedInputStream作用它相對于普通輸入流優(yōu)點是,它有一個緩沖數(shù)組,每次去調(diào)用read()方法,先從緩沖區(qū)讀取數(shù)據(jù),如果讀取數(shù)據(jù)失敗,從文件讀取新數(shù)據(jù)放到緩沖區(qū),再把緩沖區(qū)的內(nèi)容顯示出來。

3.如何用BufferedInputStream類讀取文本內(nèi)容?

(1)定義一個字節(jié)數(shù)組bt,再通過循環(huán)把文本內(nèi)容循環(huán)讀到bt中,再把讀取到的數(shù)據(jù)顯示出來。

(2)首先再text文件夾下創(chuàng)建一個test10.txt文件并寫入"Java進(jìn)階學(xué)習(xí)交流001!"的內(nèi)容。

(3)代碼的實現(xiàn):

  1. import java.io.*; 
  2. public class P08 { 
  3. public static void main(String[] args) throws Exception { 
  4.         // TODO Auto-generated method stub 
  5.         //創(chuàng)建一個帶有緩沖區(qū)的輸入流 
  6.         BufferedInputStream bi = new BufferedInputStream(new FileInputStream("text/test10")); 
  7.         //定義字節(jié)數(shù)組 
  8.         byte[] bt = new byte[1024]; 
  9.         int num = 0; 
  10.         //判斷是否讀到文件的末尾 
  11.         while ((num = bi.read(bt)) != -1) { 
  12.         //讀取的字節(jié)轉(zhuǎn)為字符串對象 
  13.         String s = new String(bt, 0, num); 
  14.         System.out.println("讀取的內(nèi)容是:"+s); 
  15.         } 
  16.         //關(guān)閉流 
  17.         bi.close(); 
  18.         } 

運行的結(jié)果如下圖所示:

四、總結(jié)

本文主要介紹了文件的拷貝、字節(jié)流的緩沖區(qū)、BufferedInputStream類。文件的拷貝是輸入流來讀取文件的數(shù)據(jù),通過輸出流把數(shù)據(jù)寫入文件。字節(jié)流的緩沖區(qū)創(chuàng)建一個字節(jié)數(shù)組來保存一次性讀取多個字節(jié)的數(shù)據(jù),再把字節(jié)數(shù)組中的數(shù)據(jù)一次性寫入文件。BufferedInputStream是緩沖輸入流,可以減少訪問磁盤的次數(shù),提高文件的讀取性能,它是FilterInputStream類的子類;它有一個緩沖數(shù)組,每次去調(diào)用read()方法,先從緩沖區(qū)讀取數(shù)據(jù),如果讀取數(shù)據(jù)失敗,從文件讀取新數(shù)據(jù)放到緩沖區(qū),再把緩沖區(qū)的內(nèi)容顯示出來。希望通過本文的學(xué)習(xí),對你有所幫助!

本文轉(zhuǎn)載自微信公眾號「Java進(jìn)階學(xué)習(xí)交流」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系Java進(jìn)階學(xué)習(xí)交流公眾號。

 

責(zé)任編輯:武曉燕 來源: Java進(jìn)階學(xué)習(xí)交流
相關(guān)推薦

2009-09-24 18:16:40

2018-08-15 10:29:58

NettyJDK內(nèi)存

2011-12-14 16:30:42

javanio

2019-02-27 13:58:29

漏洞緩沖區(qū)溢出系統(tǒng)安全

2017-01-09 17:03:34

2011-07-20 10:54:14

C++

2010-12-27 10:21:21

2017-07-04 17:09:10

Map環(huán)形緩沖區(qū)數(shù)據(jù)

2014-07-30 11:21:46

2018-01-26 14:52:43

2009-11-16 17:26:17

Oracle優(yōu)化緩沖區(qū)

2009-11-16 17:08:59

Oracle日志緩沖區(qū)

2015-03-06 17:09:10

2010-10-09 14:45:48

2022-03-03 09:20:08

分布式數(shù)據(jù)庫場景

2010-09-08 15:43:18

2011-03-23 12:39:44

2009-07-15 15:50:48

Jython線程

2009-11-16 16:59:24

Oracle優(yōu)化庫高速

2023-10-09 23:01:09

MySQL數(shù)據(jù)庫
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 亚洲国产高清免费 | 欧美视频中文字幕 | 国产日韩欧美在线播放 | 福利视频网站 | 福利精品在线观看 | 精品国产乱码久久久久久a丨 | 久久国产精品91 | 美女一区二区在线观看 | 国产中文字幕在线观看 | 一级毛片免费完整视频 | 国内精品视频在线观看 | 国产精品69毛片高清亚洲 | 欧美日韩福利视频 | 日韩欧美成人一区二区三区 | 成人在线免费观看av | 成人三级av | 欧美国产日韩在线观看成人 | 在线免费观看日本 | 综合自拍| 日韩欧美中文 | 亚洲精品综合 | 精品日韩一区 | 国产yw851.c免费观看网站 | 黑人巨大精品欧美黑白配亚洲 | 亚洲在线免费 | 午夜精品久久久久久久久久久久久 | 亚洲精品一区二区三区蜜桃久 | 中文字幕视频在线观看 | 国产日韩精品视频 | 国产成人精品在线播放 | 久久亚洲一区 | 久久福利 | 欧美激情国产精品 | 91欧美| 日韩精品在线观看免费 | 免费99精品国产自在在线 | 久久精品国产一区二区三区 | 国产成人精品网站 | 欧美日韩高清在线观看 | 日韩精品一区二区三区在线观看 | 美女一区二区在线观看 |