激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 字節緩沖流使用 BufferedInputStream 和 BufferedOutputStream這兩個流的用法

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

2021-12-02 22:49Java進階學習交流Java進階者 Java教程

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

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

大家好,我是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. }
  17. }

運行的結果如下所示:

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

在上面的代碼中,創建了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. }
  15. }

運行的結果如下所示:

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

四、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進階者,希望大家通過本文的學習,對你有所幫助!歡迎大家加我微信,有問題可以隨時幫大家解決噢,交個朋友也好哇~

原文鏈接:https://mp.weixin.qq.com/s/O4KJ9jS1AqVnVSVTWLM7vQ

延伸 · 閱讀

精彩推薦
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7482021-02-04
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
主站蜘蛛池模板: 黄在线看| 国产在线精品一区二区 | 三人弄娇妻高潮3p视频 | 成人在线影视 | 91精品国产九九九久久久亚洲 | 久久综合给合久久狠狠狠97色69 | 一区二区三区日 | 亚洲va在线 | 日韩色视频在线观看 | qyl在线视频精品免费观看 | 91综合在线观看 | 九九热九九热 | 一级免费大片 | 精品久久久久久久久久 | 欧美精品亚洲人成在线观看 | 男女羞羞视频在线观看免费 | 免费人成年短视频在线观看网站 | 国语自产免费精品视频在 | 精品在线观看一区二区三区 | 欧美日韩视频在线播放 | 国产二区三区在线播放 | 国产午夜精品一区二区三区不卡 | 精品成人av一区二区三区 | 久久国产精品区 | 国产一区二区亚洲 | 精品99在线视频 | 日本aaa一级片 | 萌白酱福利视频在线网站 | av在线日韩 | 久久观看免费视频 | 黄色视屏免费在线观看 | 亚洲一区二区三区91 | 成人在线视频免费观看 | 高清国产一区二区三区四区五区 | 久热久操 | 亚洲欧美日韩精品久久 | 特级西西444www大精品视频免费看 | 久在线草 | 视频一区二区三区在线 | 国内毛片视频 | 亚洲va久久久噜噜噜久久男同 |