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

Java基礎(chǔ)知識之CharArrayWriter流的使用

 更新時間:2021年12月13日 14:47:20   作者:咕嚕是個大胖子  
這篇文章主要介紹了Java基礎(chǔ)知識之CharArrayWriter流的使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

Java CharArrayWriter流

一、CharArrayWriter流定義

API說明:該類實現(xiàn)了一個可用作字符輸出流的字符緩沖區(qū),當(dāng)數(shù)據(jù)寫入流時,緩沖區(qū)自動增長,請注意在此類上調(diào)用close()無效,并且可以在流關(guān)閉后調(diào)用此類的方法而不生成IOException。

二、CharArrayWriter流構(gòu)造函數(shù)

根據(jù)指定緩沖區(qū)大小或者默認(rèn)緩沖區(qū)大小創(chuàng)建CharArrayWriter流對象

   /**
     *創(chuàng)造默認(rèn)緩沖區(qū)大小的CharArrayWriter對象
     */
    public CharArrayWriter() {
        this(32);
    }
 
    /**
     *  創(chuàng)造指定緩沖區(qū)大小的CharArrayWriter對象
     */
    public CharArrayWriter(int initialSize) {
        if (initialSize < 0) {
            throw new IllegalArgumentException("Negative initial size: "
                                               + initialSize);
        }
        buf = new char[initialSize];
    }

三、CharArrayWriter流實例域

/**
     * 字符緩沖區(qū)
     */
    protected char buf[];
 
    /**
     * 緩沖區(qū)中的當(dāng)前位置
     */
    protected int count;

四、CharArrayWriter流方法

1)write(int c):寫一個字符到緩沖區(qū)中

    /**
     * 寫一個單個字符到緩沖區(qū)中
     */
    public void write(int c) {
        synchronized (lock) {
            int newcount = count + 1;
 
            //判定寫入的下個元素是否超出緩沖區(qū)長度
            if (newcount > buf.length) {
 
               //進(jìn)行擴(kuò)容
                buf = Arrays.copyOf(buf, Math.max(buf.length << 1, newcount)); 
            }
            buf[count] = (char)c;
            count = newcount;
        }
    }

實際流程:

2)write(char c[], int off, int len):從字符數(shù)組中寫len個字符到緩沖區(qū)中

 /**
     * 將字符數(shù)組的一部分寫入到緩沖區(qū)中,自動擴(kuò)容增長
     */
    public void write(char c[], int off, int len) {
        if ((off < 0) || (off > c.length) || (len < 0) ||
            ((off + len) > c.length) || ((off + len) < 0)) {
            throw new IndexOutOfBoundsException();
        } else if (len == 0) {
            return;
        }
        synchronized (lock) {
            int newcount = count + len;
            
            //判定緩沖區(qū)寫入len個字符后長度是否超出限制
            if (newcount > buf.length) {
                buf = Arrays.copyOf(buf, Math.max(buf.length << 1, newcount));
            }
            System.arraycopy(c, off, buf, count, len);
            count = newcount;
        }
    }

實際流程:

3)write(String str, int off, int len):將字符串的一部分寫入到緩沖區(qū)中

    public void write(String str, int off, int len) {
        synchronized (lock) {
            int newcount = count + len;
            if (newcount > buf.length) {
                buf = Arrays.copyOf(buf, Math.max(buf.length << 1, newcount));
            }
            str.getChars(off, off + len, buf, count);
            count = newcount;
        }
    }

4)writeTo(Writer out):將緩沖區(qū)的內(nèi)容寫入到另一個字符輸出流中

    public void writeTo(Writer out) throws IOException {
        synchronized (lock) {
            out.write(buf, 0, count); //本質(zhì)理解為將緩沖區(qū)的內(nèi)容給寫了出去
        }
    }

5)檢索緩沖區(qū)中的數(shù)據(jù)

/**
     * 將緩沖區(qū)中的數(shù)據(jù)轉(zhuǎn)成字符串
     * @return the string.
     */
    public String toString() {
        synchronized (lock) {
            return new String(buf, 0, count);
        }
    }
    
    /**
     * 將緩沖區(qū)的數(shù)據(jù)轉(zhuǎn)成字符數(shù)組
     */
    public char toCharArray()[] {
        synchronized (lock) {
            return Arrays.copyOf(buf, count);
        }
    }

6)close():關(guān)閉流無效,本質(zhì)沒有做任何操作

  /**
     * 刷新流--無效
     */
    public void flush() { }
 
    /**
      *  關(guān)閉流--無效
     */
    public void close() { }

四、CharArrayWriter流的作用

與CharArrayReader流一樣,待后期理解加深、實際項目運用過后再來補(bǔ)充

Java基礎(chǔ)之什么是CharArrayWriter

CharArrayWriter 實現(xiàn)了以數(shù)組作為目標(biāo)的輸出流。CharArrayWriter 有兩個構(gòu)造函數(shù):

CharArrayWriter( ) 
CharArrayWriter(int numChars) 

第一種形式,創(chuàng)建了一個默認(rèn)長度的緩沖器。

第二種形式,緩沖器長度由numChars指定。

緩沖器保存在CharArrayWriter的buf 成員中。緩沖器大小在需要的情況下可以自動增長。緩沖器保持的字符數(shù)包含在CharArrayWriter的count 成員中。buf 和count 都是受保護(hù)的域。

下面的例子闡述了CharArrayWriter

我們繼續(xù)使用前面顯示的ByteArrayOutputStream 例子中演示的程序。它的輸出與以前的例子輸出相同:

// Demonstrate CharArrayWriter. 
import java.io.*; 
class CharArrayWriterDemo { 
 public static void main(String args[]) throws IOException { 
 CharArrayWriter f = new CharArrayWriter(); 
 String s = "This should end up in the array"; 
 char buf[] = new char[s.length()]; 
 s.getChars(0, s.length(), buf, 0); 
 f.write(buf); 
 System.out.println("Buffer as a string"); 
 System.out.println(f.toString()); 
 System.out.println("Into array"); 
 char c[] = f.toCharArray(); 
 for (int i=0; i<c.length; i++) { 
 System.out.print(c[i]); 
 } 
 System.out.println("\nTo a FileWriter()"); 
 FileWriter f2 = new FileWriter("test.txt"); 
 f.writeTo(f2); 
 f2.close(); 
 System.out.println("Doing a reset"); 
 f.reset(); 
 for (int i=0; i<3; i++) 
 f.write('X'); 
 System.out.println(f.toString()); 
 } 
}

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot帶你實現(xiàn)一個點餐小程序

    SpringBoot帶你實現(xiàn)一個點餐小程序

    有個小伙伴臨時找到我,要開發(fā)一個點餐的系統(tǒng),時間比較著急,給了2天的時間。馬馬虎虎的搞出來了,頭發(fā)掉了一撮!下面介紹下本系統(tǒng),感興趣的小伙伴,可以參考開發(fā)下
    2022-07-07
  • Java 如何將網(wǎng)絡(luò)資源url轉(zhuǎn)化為File文件

    Java 如何將網(wǎng)絡(luò)資源url轉(zhuǎn)化為File文件

    這篇文章主要介紹了Java 如何將網(wǎng)絡(luò)資源url轉(zhuǎn)化為File文件的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Spring-AOP-ProceedingJoinPoint的使用詳解

    Spring-AOP-ProceedingJoinPoint的使用詳解

    這篇文章主要介紹了Spring-AOP-ProceedingJoinPoint的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • java使用Base64實現(xiàn)文件加密解密

    java使用Base64實現(xiàn)文件加密解密

    這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)Base64給文件加密、解密,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • 全面理解Java中的引用傳遞和值傳遞

    全面理解Java中的引用傳遞和值傳遞

    這篇文章主要介紹了全面理解Java中的引用傳遞和值傳遞,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • eclipse報錯 eclipse啟動報錯解決方法

    eclipse報錯 eclipse啟動報錯解決方法

    本文將介紹eclipse啟動報錯解決方法,需要了解的朋友可以參考下
    2012-11-11
  • 詳解Spring Data Jpa 模糊查詢的正確用法

    詳解Spring Data Jpa 模糊查詢的正確用法

    本篇文章主要介紹了詳解Spring Data Jpa 模糊查詢的正確用法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • Spring Boot實現(xiàn)STOMP協(xié)議的WebSocket的方法步驟

    Spring Boot實現(xiàn)STOMP協(xié)議的WebSocket的方法步驟

    這篇文章主要介紹了Spring Boot實現(xiàn)STOMP協(xié)議的WebSocket的方法步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05
  • 詳解spring cloud hystrix緩存功能的使用

    詳解spring cloud hystrix緩存功能的使用

    這篇文章主要介紹了詳解spring cloudhystrix緩存功能的使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • Java EasyExcel導(dǎo)出報內(nèi)存溢出的解決辦法

    Java EasyExcel導(dǎo)出報內(nèi)存溢出的解決辦法

    使用EasyExcel進(jìn)行大數(shù)據(jù)量導(dǎo)出時容易導(dǎo)致內(nèi)存溢出,特別是在導(dǎo)出百萬級別的數(shù)據(jù)時,你有遇到過這種情況嗎,以下是小編整理的解決該問題的一些常見方法,需要的朋友可以參考下
    2024-10-10

最新評論

杭锦后旗| 昌黎县| 宁武县| 姜堰市| 盈江县| 莱西市| 墨江| 台中县| 郑州市| 道孚县| 连云港市| 邳州市| 克拉玛依市| 新田县| 手游| 延寿县| 小金县| 佛教| 恩平市| 阿鲁科尔沁旗| 封开县| 都江堰市| 玉树县| 巨鹿县| 威海市| 剑川县| 六盘水市| 邓州市| 黄陵县| 洛隆县| 厦门市| 镇安县| 洛南县| 华蓥市| 张家界市| 于田县| 长治市| 鄂尔多斯市| 洪雅县| 云和县| 淳安县|