在本教程中,我們將借助示例學(xué)習(xí)Java BufferedWriter及其方法。
java.io包的BufferedWriter類可以與其他寫入器一起使用,以更有效地寫入數(shù)據(jù)(以字符為單位)。
它繼承了抽象類Writer。
BufferedWriter維護(hù)一個內(nèi)部的8192個字符緩沖器。
在寫操作期間,字符將被寫入內(nèi)部緩沖區(qū)而不是磁盤。 一旦緩沖區(qū)被填充或關(guān)閉寫入器,緩沖區(qū)中的所有字符將被寫入磁盤。
因此,減少了與磁盤的通信次數(shù)。這就是為什么使用BufferedWriter寫入字符更快的原因。
為了創(chuàng)建一個BufferedWriter,我們必須首先導(dǎo)入java.io.BufferedWriter包。導(dǎo)入包后,就可以創(chuàng)建緩沖的寫入器了。
//創(chuàng)建 FileWriter FileWriter file = new FileWriter(String name); //創(chuàng)建 BufferedWriter BufferedWriter buffer = new BufferedWriter(file);
在上面的示例中,我們創(chuàng)建了名為buffer的BufferedWriter和名為file的FileWriter。
此處,BufferedWriter的內(nèi)部緩沖區(qū)的默認(rèn)大小為8192個字符。 但是,我們也可以指定內(nèi)部緩沖區(qū)的大小。
//創(chuàng)建一個具有指定大小的內(nèi)部緩沖區(qū)的BufferedWriter BufferedWriter buffer = new BufferedWriter(file, int size);
緩沖區(qū)將有助于更有效地將字符寫入文件。
BufferedWriter類提供Writer中存在的不同方法的實(shí)現(xiàn)。
write() - 將單個字符寫入寫入器的內(nèi)部緩沖區(qū)
write(char[] array) - 將指定數(shù)組中的字符寫入寫入器
write(String data) - 將指定的字符串寫入寫入器
import java.io.FileWriter; import java.io.BufferedWriter; public class Main { public static void main(String args[]) { String data = "This is the data in the output file"; try { //創(chuàng)建 FileWriter FileWriter file = new FileWriter("output.txt"); //創(chuàng)建 BufferedWriter BufferedWriter output = new BufferedWriter(file); //將字符串寫入文件 output.write(data); //關(guān)閉 writer output.close(); } catch (Exception e) { e.getStackTrace(); } } }
在上面的示例中,我們創(chuàng)建了一個名為output的緩沖寫入器和文件寫入器。緩存的寫入器與output.txt文件鏈接。
FileWriter file = new FileWriter("output.txt"); BufferedWriter output = new BufferedWriter(file);
要將數(shù)據(jù)寫入文件,我們使用了write()方法。
在這里,當(dāng)我們運(yùn)行程序時,output.txt文件將填充以下內(nèi)容。
This is a line of text inside the file.
要清除內(nèi)部緩沖區(qū),我們可以使用flush()方法。 此方法強(qiáng)制編寫器將緩沖區(qū)中存在的所有數(shù)據(jù)寫入目標(biāo)文件。
例如,假設(shè)我們有一個名為output.txt的空文件。
import java.io.FileWriter; import java.io.BufferedWriter; public class Main { public static void main(String[] args) { String data = "This is a demo of the flush method"; try { //創(chuàng)建 FileWriter FileWriter file = new FileWriter(" flush.txt"); //創(chuàng)建 BufferedWriter BufferedWriter output = new BufferedWriter(file); //將數(shù)據(jù)寫入文件 output.write(data); //將數(shù)據(jù)刷新到目標(biāo) output.flush(); System.out.println("數(shù)據(jù)被刷新到文件中。"); output.close(); } catch(Exception e) { e.getStackTrace(); } } }
輸出結(jié)果
數(shù)據(jù)被刷新到文件中。
當(dāng)我們運(yùn)行程序時,文件output.txt被字符串?dāng)?shù)據(jù)表示的文本填充。
要關(guān)閉緩沖的writer,我們可以使用close()方法。一旦調(diào)用了close()方法,就不能使用writer寫入數(shù)據(jù)。
方法 | 描述 |
---|---|
newLine() | 向作者插入新行 |
append() | 將指定字符插入當(dāng)前寫入器 |