最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中BufferedReader與BufferedWriter類的使用示例

 更新時(shí)間:2016年06月30日 08:58:44   作者:skywangkw  
BufferedReader與BufferedWriter分別繼承于Reader和Writer類,分別為字符的讀取和寫入添加緩沖功能,這里我們就來(lái)看一下Java中BufferedReader與BufferedWriter類的使用示例:

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

示例:

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測(cè)試函數(shù)
   */
  private static void testBufferedReader() {

    // 創(chuàng)建BufferedReader字符流,內(nèi)容是ArrayLetters數(shù)組
    try {
      File file = new File("bufferedreader.txt");
      BufferedReader in =
         new BufferedReader(
           new FileReader(file));

      // 從字符流中讀取5個(gè)字符?!癮bcde”
      for (int i=0; i<LEN; i++) {
        // 若能繼續(xù)讀取下一個(gè)字符,則讀取下一個(gè)字符
        if (in.ready()) {
          // 讀取“字符流的下一個(gè)字符”
          int tmp = in.read();
          System.out.printf("%d : %c\n", i, tmp);
        }
      }

      // 若“該字符流”不支持標(biāo)記功能,則直接退出
      if (!in.markSupported()) {
        System.out.println("make not supported!");
        return ;
      }

      // 標(biāo)記“當(dāng)前索引位置”,即標(biāo)記第6個(gè)位置的元素--“f”
      // 1024對(duì)應(yīng)marklimit
      in.mark(1024);

      // 跳過(guò)22個(gè)字符。
      in.skip(22);

      // 讀取5個(gè)字符
      char[] buf = new char[LEN];
      in.read(buf, 0, LEN);
      System.out.printf("buf=%s\n", String.valueOf(buf));
      // 讀取該行剩余的數(shù)據(jù)
      System.out.printf("readLine=%s\n", in.readLine());

      // 重置“輸入流的索引”為mark()所標(biāo)記的位置,即重置到“f”處。
      in.reset();
      // 從“重置后的字符流”中讀取5個(gè)字符到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的內(nèi)容如下:

abcdefghijklmnopqrstuvwxyz
0123456789
ABCDEFGHIJKLMNOPQRSTUVWXYZ

運(yùn)行結(jié)果:

0 : a
1 : b
2 : c
3 : d
4 : e
buf=01234
readLine=56789
buf=fghij

BufferedWriter
BufferedWriter 是緩沖字符輸出流。它繼承于Writer。
BufferedWriter 的作用是為其他字符輸出流添加一些緩沖功能。
BufferedWriter通過(guò)字符數(shù)組來(lái)緩沖數(shù)據(jù),當(dāng)緩沖區(qū)滿或者用戶調(diào)用flush()函數(shù)時(shí),它就會(huì)將緩沖區(qū)的數(shù)據(jù)寫入到輸出流中。
示例:

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;
  // 對(duì)應(yīng)英文字母“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測(cè)試函數(shù)
   */
  private static void testBufferedWriter() {

    // 創(chuàng)建“文件輸出流”對(duì)應(yīng)的BufferedWriter
    // 它對(duì)應(yīng)緩沖區(qū)的大小是16,即緩沖區(qū)的數(shù)據(jù)>=16時(shí),會(huì)自動(dòng)將緩沖區(qū)的內(nèi)容寫入到輸出流。
    try {
      File file = new File("bufferwriter.txt");
      BufferedWriter out =
         new BufferedWriter(
           new FileWriter(file));

      // 將ArrayLetters數(shù)組的前10個(gè)字符寫入到輸出流中
      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);
    // 等待一個(gè)輸入
    String str = reader.next();
    System.out.printf("the input is : %s\n", str);
  }
}

運(yùn)行結(jié)果: 生成文件“bufferwriter.txt”,文件的內(nèi)容是“abcdefghij”。

相關(guān)文章

  • spring @Scheduled注解的使用誤區(qū)及解決

    spring @Scheduled注解的使用誤區(qū)及解決

    這篇文章主要介紹了spring @Scheduled注解的使用誤區(qū)及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • mybatis中的緩存機(jī)制

    mybatis中的緩存機(jī)制

    這篇文章主要介紹了mybatis中的緩存機(jī)制用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Java實(shí)現(xiàn)分頁(yè)的幾種方法詳細(xì)解析

    Java實(shí)現(xiàn)分頁(yè)的幾種方法詳細(xì)解析

    這篇文章主要介紹了Java實(shí)現(xiàn)分頁(yè)的幾種方法詳細(xì)解析,在Java中想實(shí)現(xiàn)分頁(yè)功能有幾種常用的方法,今天我們就來(lái)詳細(xì)解析一下,文中提供了解決思路和部分實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2023-11-11
  • Spring標(biāo)準(zhǔn)的xml文件頭實(shí)例分析

    Spring標(biāo)準(zhǔn)的xml文件頭實(shí)例分析

    這篇文章主要介紹了Spring標(biāo)準(zhǔn)的xml文件頭實(shí)例分析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • 詳解JavaScript中的函數(shù)聲明和函數(shù)表達(dá)式

    詳解JavaScript中的函數(shù)聲明和函數(shù)表達(dá)式

    這篇文章主要介紹了詳解JavaScript中的函數(shù)聲明和函數(shù)表達(dá)式,是JS入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-08-08
  • tomcat目錄結(jié)構(gòu)簡(jiǎn)介_(kāi)動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    tomcat目錄結(jié)構(gòu)簡(jiǎn)介_(kāi)動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要介紹了tomcat目錄結(jié)構(gòu)簡(jiǎn)介_(kāi)動(dòng)力節(jié)點(diǎn)Java學(xué)院整理的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • 如何在spring boot項(xiàng)目中使用Spring Security的BCryptPasswordEncoder類進(jìn)行相同密碼不同密文的加密和驗(yàn)證

    如何在spring boot項(xiàng)目中使用Spring Security的BCryptPasswordE

    本文介紹如何在Spring Boot項(xiàng)目中通過(guò)修改pom.xml引入安全依賴,添加配置類以解除默認(rèn)的HTTP請(qǐng)求攔截,以及如何創(chuàng)建BCryptPasswordEncoder對(duì)象進(jìn)行密碼的加密和匹配,通過(guò)這些步驟,可以有效地增強(qiáng)應(yīng)用的安全性
    2023-08-08
  • java 四舍五入保留小數(shù)的實(shí)現(xiàn)方法

    java 四舍五入保留小數(shù)的實(shí)現(xiàn)方法

    下面小編就為大家?guī)?lái)一篇java 四舍五入保留小數(shù)的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-09-09
  • Java快速入門掌握類與對(duì)象及變量的使用

    Java快速入門掌握類與對(duì)象及變量的使用

    類和對(duì)象是兩種以計(jì)算機(jī)為載體的計(jì)算機(jī)語(yǔ)言的合稱。對(duì)象是對(duì)客觀事物的抽象,類是對(duì)對(duì)象的抽象。類是一種抽象的數(shù)據(jù)類型;變量就是可以變化的量,存儲(chǔ)在內(nèi)存中—個(gè)可以擁有在某個(gè)范圍內(nèi)的可變存儲(chǔ)區(qū)域
    2022-04-04
  • Spring Mybatis 分頁(yè)插件使用教程

    Spring Mybatis 分頁(yè)插件使用教程

    這篇文章主要介紹了Spring Mybatis分頁(yè)插件使用教程,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02

最新評(píng)論

基隆市| 电白县| 十堰市| 富民县| 阿拉尔市| 岑溪市| 泊头市| 桐乡市| 台山市| 达日县| 亳州市| 潍坊市| 卫辉市| 如皋市| 晴隆县| 金昌市| 榕江县| 云南省| 长子县| 牡丹江市| 淄博市| 仙桃市| 武宁县| 南汇区| 林口县| 曲周县| 丘北县| 永康市| 房产| 武安市| 扶余县| 称多县| 岳普湖县| 通许县| 桃园县| 张北县| 荣昌县| 平谷区| 平邑县| 苍梧县| 巨野县|