自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

字節(jié)緩沖流使用 BufferedInputStream 和 BufferedOutputStream這兩個流的用法

存儲 存儲軟件
本文主要學(xué)習(xí)字節(jié)緩沖流使用BufferedInputStream和BufferedOutputStream這兩個流的用法來實(shí)現(xiàn)文本拷貝、字符流、Reader類、Writer類這些的用法。接下來小編帶大家一起來學(xué)習(xí)這些用法!

[[438057]]

大家好,我是Java進(jìn)階者。

前言

本文主要學(xué)習(xí)字節(jié)緩沖流使用BufferedInputStream和BufferedOutputStream這兩個流的用法來實(shí)現(xiàn)文本拷貝、字符流、Reader類、Writer類這些的用法。接下來小編帶大家一起來學(xué)習(xí)這些用法!

一、字節(jié)緩沖流

1.在前面我們學(xué)習(xí)了BufferedInputStream和BufferedOutputStream類,這兩個類分別是FilterInputStream類和FilterOutputStream類的子類。它們的構(gòu)造方法分別接受InputStream和OutStream類型的參數(shù),在讀寫數(shù)據(jù)有一個緩沖的功能。

2.使用緩沖流來完成讀寫數(shù)據(jù),接下來通過一個案例使用BufferedInputStream和BufferedOutputStream這兩個流的用法來實(shí)現(xiàn)文本拷貝。實(shí)現(xiàn)例子如下所示:

(1)首先在text文件夾目錄下創(chuàng)建一個test11.txt并寫入"Hello,world~~~test!"內(nèi)容。

(2)實(shí)現(xiàn)文件的拷貝代碼如下所示:

  1. import java.io.*; 
  2. public class P11 { 
  3. public static void main(String[] args) throws Exception { 
  4.         // TODO Auto-generated method stub 
  5.         //創(chuàng)建有緩沖區(qū)的輸入流和輸出流 
  6.         BufferedInputStream in = new BufferedInputStream(new FileInputStream("text/test11")); 
  7.         BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("text/test12")); 
  8.         int num; 
  9.         //判斷是否讀到文件的末尾 
  10.         while((num=in.read())!=-1){ 
  11.             bos.write(num); 
  12.         } 
  13.         //關(guān)閉流 
  14.         in.close(); 
  15.         bos.close(); 
  16.   } 

運(yùn)行的結(jié)果如下所示:

在上面的代碼中,創(chuàng)建了BufferedInputStream和BufferedOutputStream兩個緩沖流對象,在這兩個流中內(nèi)部定義一個字節(jié)數(shù)組,當(dāng)調(diào)用read()方法或write()方法讀寫數(shù)據(jù),先將讀寫的數(shù)據(jù)存到字節(jié)數(shù)組,在把字節(jié)數(shù)組的數(shù)據(jù)一次性讀寫到文件中。

二、字符流

1.我們前面學(xué)過InputStream和OutputStream的輸入輸出操作都是基于字節(jié)的,字節(jié)流不能操作Unicode字符,我們知道漢字在文件是占2個字節(jié),若使用字節(jié)流讀取不當(dāng)會出現(xiàn)亂碼現(xiàn)象例如顯示一個正方形的框。使用字符流可以避免出現(xiàn)亂碼現(xiàn)象。

2.字符流有兩個抽象超類分別是Reader和Writer,Reader是字符輸入流,使用從某個源設(shè)備讀取字符,Writer是字符輸出流,用于向某個目標(biāo)設(shè)備寫入字符。

三、Reader類

1.java.io.Reader是字符輸入流的最頂層的父類,這個類定義了以字符為單位讀取數(shù)據(jù)的基本方法,并在子類進(jìn)行分化和實(shí)現(xiàn)。

2.Reader類方法有如下所示:

(1)public int read() throws IOException:讀取一個字符。在讀取流,如果沒有數(shù)據(jù)就會出現(xiàn)調(diào)用受阻的現(xiàn)象,程序會一直等待到有數(shù)據(jù)讀出為止。

(2)public int read(char cbuf[]) throws IOException:讀取多個字符到字符數(shù)組cbuf。

(3)public int read(char cbuf[],int off,int len) throws IOException:從off開始的位置中讀取len個字符存放到字符數(shù)組。off參數(shù)表示數(shù)組偏移量,len參數(shù)表示讀取數(shù)據(jù)的長度。

(4)public void mark(int readAheadLimit) throws IOException:在輸入流中設(shè)置標(biāo)記。

(5)public boolean markSupporter() throws IOException:測試輸入流是否支持mark()方法

(6)public void reset() throws IOException:重置流的當(dāng)前位置到前面標(biāo)記的位置。

(7)public void close() throws IOException:表示關(guān)閉流。

(8)public long skip(long n) throws IOException:略過流中的數(shù)據(jù)。若數(shù)據(jù)不夠,跳過僅有的字節(jié),返回跳過的字節(jié)數(shù)。

(9)public boolean ready():返回輸入流是否做好讀的準(zhǔn)備。

3.Reader類實(shí)例代碼如下所示:

(1)在text文件夾目錄下創(chuàng)建一個test13.txt文件并寫入"Hello,World!Java進(jìn)階學(xué)習(xí)交流!"。

(2)代碼實(shí)現(xiàn)的例子:

  1. public class P12 { 
  2. public static void main(String[] args) throws Exception { 
  3.         // TODO Auto-generated method stub 
  4.         //聲明File對象 
  5.         File f=new File("text/test13"); 
  6.         Reader in=new FileReader(f); 
  7.         //所有的數(shù)據(jù)讀到數(shù)組c中 
  8.         char c[]=new char[1024]; 
  9.         //讀取內(nèi)容 
  10.         int len=in.read(c); 
  11.         //關(guān)閉流 
  12.         in.close(); 
  13.         System.out.println("內(nèi)容為:"+new String(c,0,len)); 
  14.   } 

運(yùn)行的結(jié)果如下所示:

四、Writer類

1.Writer類是一個寫入字符流的抽象類。

2.Writer方法有如下所示:

(1)public void close() throws IOException方法:表示關(guān)閉流。

(2)public voir write(int c) throws IOException方法:表示寫入單個字符。

(3)public abstract void read(char cbuf[],int off,int len) throws IOException方法:向流中寫入一個數(shù)組,參數(shù)off指定數(shù)組的偏移量,len指定讀取數(shù)據(jù)的長度。

(4)public void write(String str) throws IOException方法:寫入一個字符串。

五、總結(jié)

本文主要介紹了字節(jié)緩沖流、字符流、Reader類、Writer類。字節(jié)緩沖流是使用BufferedInputStream和BufferedOutputStream這兩個流的用法來實(shí)現(xiàn)文本拷貝。字符流有兩個抽象超類分別是Reader和Writer,Reader是字符輸入流,使用從某個源設(shè)備讀取字符,Writer是字符輸出流,用于向某個目標(biāo)設(shè)備寫入字符。介紹了Reader類的方法,通過Reader類實(shí)例來實(shí)現(xiàn)讀取文本文件內(nèi)容,Writer類是一個寫入字符流的抽象類。希望大家通過本文的學(xué)習(xí),對你有所幫助!

我是Java進(jìn)階者,希望大家通過本文的學(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)推薦

2021-12-09 09:30:38

字節(jié)流文件緩沖區(qū)

2020-02-27 14:05:26

SQLServer數(shù)據(jù)庫

2022-03-07 10:26:25

開源springboot項(xiàng)目

2020-12-10 10:32:33

區(qū)塊鏈比特幣數(shù)字貨幣

2025-03-12 00:22:00

2022-01-26 00:04:01

LinuxTSSLDT

2020-09-21 08:43:55

java

2022-02-23 15:30:28

SpringBoot后端流程

2021-06-30 21:20:21

Python變量閉包

2022-02-21 23:08:50

Kubernetes集群容器

2022-02-09 15:23:41

大數(shù)據(jù)流計(jì)算Spark

2023-09-12 08:19:48

接口Controller線程

2022-06-23 08:01:48

hookSetMap

2023-01-13 16:57:50

SpringBoot配置核心

2021-05-11 16:44:42

Windows工具軟件

2017-08-28 14:47:54

NASSAN存儲

2018-03-21 12:13:47

工具數(shù)據(jù)開發(fā)

2021-03-15 09:44:39

Broker源碼RocketMQ

2010-07-13 10:10:28

WPF

2024-01-11 11:35:46

Python開發(fā)
點(diǎn)贊
收藏

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