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

字節緩沖流使用 BufferedInputStream 和 BufferedOutputStream這兩個流的用法

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

[[438057]]

大家好,我是Java進階者。

前言

本文主要學習字節緩沖流使用BufferedInputStream和BufferedOutputStream這兩個流的用法來實現文本拷貝、字符流、Reader類、Writer類這些的用法。接下來小編帶大家一起來學習這些用法!

一、字節緩沖流

1.在前面我們學習了BufferedInputStream和BufferedOutputStream類,這兩個類分別是FilterInputStream類和FilterOutputStream類的子類。它們的構造方法分別接受InputStream和OutStream類型的參數,在讀寫數據有一個緩沖的功能。

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

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

(2)實現文件的拷貝代碼如下所示:

  1. import java.io.*; 
  2. public class P11 { 
  3. public static void main(String[] args) throws Exception { 
  4.         // TODO Auto-generated method stub 
  5.         //創建有緩沖區的輸入流和輸出流 
  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.         //關閉流 
  14.         in.close(); 
  15.         bos.close(); 
  16.   } 

運行的結果如下所示:

在上面的代碼中,創建了BufferedInputStream和BufferedOutputStream兩個緩沖流對象,在這兩個流中內部定義一個字節數組,當調用read()方法或write()方法讀寫數據,先將讀寫的數據存到字節數組,在把字節數組的數據一次性讀寫到文件中。

二、字符流

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

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

三、Reader類

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

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

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

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

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

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

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

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

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

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

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

3.Reader類實例代碼如下所示:

(1)在text文件夾目錄下創建一個test13.txt文件并寫入"Hello,World!Java進階學習交流!"。

(2)代碼實現的例子:

  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.         //所有的數據讀到數組c中 
  8.         char c[]=new char[1024]; 
  9.         //讀取內容 
  10.         int len=in.read(c); 
  11.         //關閉流 
  12.         in.close(); 
  13.         System.out.println("內容為:"+new String(c,0,len)); 
  14.   } 

運行的結果如下所示:

四、Writer類

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

2.Writer方法有如下所示:

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

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

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

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

五、總結

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

我是Java進階者,希望大家通過本文的學習,對你有所幫助!歡迎大家加我微信,有問題可以隨時幫大家解決噢,交個朋友也好哇~

本文轉載自微信公眾號「Java進階學習交流」,可以通過以下二維碼關注。轉載本文請聯系Java進階學習交流公眾號。

 

責任編輯:武曉燕 來源: Java進階學習交流
相關推薦

2021-12-09 09:30:38

字節流文件緩沖區

2020-02-27 14:05:26

SQLServer數據庫

2022-03-07 10:26:25

開源springboot項目

2020-12-10 10:32:33

區塊鏈比特幣數字貨幣

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

大數據流計算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存儲

2021-03-15 09:44:39

Broker源碼RocketMQ

2018-03-21 12:13:47

工具數據開發

2010-07-13 10:10:28

WPF

2024-01-11 11:35:46

Python開發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日日人人 | 成人国产精品免费观看视频 | 久久成人人人人精品欧 | 国产欧美在线播放 | 国产视频黄色 | 久久精品亚洲精品国产欧美 | 综合久久av | 久久国产精品精品 | 伊伊综合网 | av网站在线看 | 成人福利在线观看 | 国产精品久久久久久久久久久免费看 | 99reav| 91免费电影 | 国产亚洲精品精品国产亚洲综合 | 欧美一级视频免费看 | 国产精品久久久久久久免费大片 | 黄免费观看视频 | 国产一区欧美 | 日韩精品在线看 | h片在线观看网站 | 中文字幕第一页在线 | 国产农村妇女毛片精品久久麻豆 | 成人在线播放网址 | www.国产精 | 日本黄色大片免费 | 福利久久 | 搞av.com| 中文字幕一区二区三区日韩精品 | 国产欧美精品一区二区色综合朱莉 | 亚州综合在线 | 奇米久久| 国产精品一区二区三区在线播放 | 国产三级网站 | 黄色激情毛片 | 成人精品一区二区 | 免费成人国产 | hsck成人网 | 一本一道久久a久久精品综合蜜臀 | 久久中文字幕av | 欧美综合一区二区 |