国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java中BufferedReader與BufferedWriter類的使用示例

2019-11-26 14:07:23
字體:
來源:轉載
供稿:網友

BufferedReader
BufferedReader 是緩沖字符輸入流。它繼承于Reader。
BufferedReader 的作用是為其他字符輸入流添加一些緩沖功能。
創建BufferReader時,我們會通過它的構造函數指定某個Reader為參數。BufferReader會將該Reader中的數據分批讀取,每次讀取一部分到緩沖中;操作完緩沖中的這部分數據之后,再從Reader中讀取下一部分的數據。
為什么需要緩沖呢?原因很簡單,效率問題!緩沖中的數據實際上是保存在內存中,而原始數據可能是保存在硬盤或NandFlash中;而我們知道,從內存中讀取數據的速度比從硬盤讀取數據的速度至少快10倍以上。
那干嘛不干脆一次性將全部數據都讀取到緩沖中呢?第一,讀取全部的數據所需要的時間可能會很長。第二,內存價格很貴,容量不想硬盤那么大。

示例:

import java.io.BufferedReader;import java.io.ByteArrayInputStream;import java.io.File;import java.io.InputStream;import java.io.FileReader;import java.io.IOException;import java.io.FileNotFoundException;import java.lang.SecurityException;public class BufferedReaderTest {  private static final int LEN = 5;  public static void main(String[] args) {    testBufferedReader() ;  }  /**   * BufferedReader的API測試函數   */  private static void testBufferedReader() {    // 創建BufferedReader字符流,內容是ArrayLetters數組    try {      File file = new File("bufferedreader.txt");      BufferedReader in =         new BufferedReader(           new FileReader(file));      // 從字符流中讀取5個字符。“abcde”      for (int i=0; i<LEN; i++) {        // 若能繼續讀取下一個字符,則讀取下一個字符        if (in.ready()) {          // 讀取“字符流的下一個字符”          int tmp = in.read();          System.out.printf("%d : %c/n", i, tmp);        }      }      // 若“該字符流”不支持標記功能,則直接退出      if (!in.markSupported()) {        System.out.println("make not supported!");        return ;      }      // 標記“當前索引位置”,即標記第6個位置的元素--“f”      // 1024對應marklimit      in.mark(1024);      // 跳過22個字符。      in.skip(22);      // 讀取5個字符      char[] buf = new char[LEN];      in.read(buf, 0, LEN);      System.out.printf("buf=%s/n", String.valueOf(buf));      // 讀取該行剩余的數據      System.out.printf("readLine=%s/n", in.readLine());      // 重置“輸入流的索引”為mark()所標記的位置,即重置到“f”處。      in.reset();      // 從“重置后的字符流”中讀取5個字符到buf中。即讀取“fghij”      in.read(buf, 0, LEN);      System.out.printf("buf=%s/n", String.valueOf(buf));      in.close();    } catch (FileNotFoundException e) {      e.printStackTrace();    } catch (SecurityException e) {      e.printStackTrace();    } catch (IOException e) {      e.printStackTrace();    }  }}

程序中讀取的bufferedreader.txt的內容如下:

abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ

運行結果:

0 : a1 : b2 : c3 : d4 : ebuf=01234readLine=56789buf=fghij

BufferedWriter
BufferedWriter 是緩沖字符輸出流。它繼承于Writer。
BufferedWriter 的作用是為其他字符輸出流添加一些緩沖功能。
BufferedWriter通過字符數組來緩沖數據,當緩沖區滿或者用戶調用flush()函數時,它就會將緩沖區的數據寫入到輸出流中。
示例:

import java.io.BufferedWriter;import java.io.File;import java.io.OutputStream;import java.io.FileWriter;import java.io.IOException;import java.io.FileNotFoundException;import java.lang.SecurityException;import java.util.Scanner;public class BufferedWriterTest {  private static final int LEN = 5;  // 對應英文字母“abcdefghijklmnopqrstuvwxyz”  //private static final char[] ArrayLetters = "abcdefghijklmnopqrstuvwxyz";  private static final char[] ArrayLetters = new char[] {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};  public static void main(String[] args) {    testBufferedWriter() ;  }  /**   * BufferedWriter的API測試函數   */  private static void testBufferedWriter() {    // 創建“文件輸出流”對應的BufferedWriter    // 它對應緩沖區的大小是16,即緩沖區的數據>=16時,會自動將緩沖區的內容寫入到輸出流。    try {      File file = new File("bufferwriter.txt");      BufferedWriter out =         new BufferedWriter(           new FileWriter(file));      // 將ArrayLetters數組的前10個字符寫入到輸出流中      out.write(ArrayLetters, 0, 10);      // 將“換行符/n”寫入到輸出流中      out.write('/n');      out.flush();      //readUserInput() ;      out.close();    } catch (FileNotFoundException e) {      e.printStackTrace();    } catch (SecurityException e) {      e.printStackTrace();    } catch (IOException e) {      e.printStackTrace();    }  }  /**   * 讀取用戶輸入   */  private static void readUserInput() {    System.out.println("please input a text:");    Scanner reader=new Scanner(System.in);    // 等待一個輸入    String str = reader.next();    System.out.printf("the input is : %s/n", str);  }}

運行結果: 生成文件“bufferwriter.txt”,文件的內容是“abcdefghij”。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 英德市| 庆元县| 桐梓县| 乐都县| 横峰县| 海南省| 页游| 通渭县| 竹北市| 临城县| 平陆县| 宜川县| 修武县| 区。| 和平区| 邵阳县| 平安县| 赫章县| 鸡西市| 宁远县| 光泽县| 平顶山市| 隆安县| 德钦县| 五寨县| 本溪| 吴忠市| 平果县| 徐州市| 普陀区| 长宁区| 秦安县| 夏河县| 门头沟区| 新乡市| 和静县| 陵川县| 无极县| 临湘市| 茌平县| 曲靖市|