簡體   English   中英

緩沖讀取器和寫入器

[英]Buffered Readers and Writers

所以我有一個問題,我在一本教科書中讀到,緩沖區僅在文本文件已滿時才寫入文本文件,並且僅在文本文件為空時才從文本文件中讀取因此假設我只想寫一個字符串“James”,當然不會't 使緩沖區滿,那么為什么它仍然被寫入文件 testout.txt

package com.javatpoint;  

import java.io.*;

public class BufferedWriterExample {

    public static void main(String[] args) throws Exception {     
        FileWriter writer = new FileWriter("D:\\testout.txt");  
        BufferedWriter buffer = new BufferedWriter(writer);  
        buffer.write("Welcome to javaTpoint.");  enter code here
        buffer.close();  
        System.out.println("Sucenter code herecess");  
    }
}

我在教科書中讀到,緩沖區 [in a BufferedWriter ] 僅在文本文件已滿時才寫入文本文件...

那是不正確的1 事實上,一個BufferedWriter將寫入它包裝的Writer

  • 當對其中一種寫入方法的調用填滿緩沖區2 時
  • 當你調用bw.flush()或者
  • 當您調用bw.close()

這些通常會將數據寫入文件。 (但並非總是如此。這取決於包裝的Writer的行為。)

因此,在您的示例中寫入所有數據的原因是您正在調用buffer.close()


...和 ​​[a BufferedReader ] 僅在文本文件為空時從文本文件中讀取。

這是正確的,但與您的其他問題無關。


1 - 你可能誤讀了教科書。

2 - 實際上它比這更復雜一點,因為write(char[], ...)足夠多字符的write(char[], ...)調用將首先刷新緩沖區,然后直接從char[]寫入包裝溪流。 它繞過緩沖區以避免不必要的復制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM