gpt4 book ai didi

java - BufferedWriter 在 Java 中是如何工作的

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:45:55 27 4
gpt4 key购买 nike

我经常将文本输出到文件。我想知道:BufferedWriter 是如何工作的?

当我调用 writer.write(text) 时,它是否将文本写入文件?如果不写入文本,是否需要使用flush函数来写入数据?

例如:

       File file = new File("statistics.txt");
if (!file.exists()) {
file.createNewFile();
}
else
{
file.delete();
file.createNewFile();
}
FileWriter fileWritter = new FileWriter(file.getAbsoluteFile(),true);
BufferedWriter bufferWritter = new BufferedWriter(fileWritter);
Iterator<Map.Entry<String,Token>> it = listofTakenPairMap.entrySet().iterator();
int isim_isim=0;
int isim_fiil=0;
int zarf_fiil=0;
while (it.hasNext()) {
@SuppressWarnings("rawtypes")
Map.Entry pairs = (Map.Entry)it.next();
Token token=(Token)pairs.getValue();
String str=pairs.getKey()+ " = " +token.getCount();
if(token.getTypeOfPairofToken()==0){//isim-isim
isim_isim+=token.getCount();
}
else if(token.getTypeOfPairofToken()==1){
isim_fiil+=token.getCount();
}
else{ //zarf-fiil
zarf_fiil+=token.getCount();
}
System.out.println(str);
bufferWritter.write(str);
bufferWritter.newLine();
//it.remove(); // avoids a ConcurrentModificationException
}
bufferWritter.newLine();
bufferWritter.write("##############################");
bufferWritter.newLine();
bufferWritter.write("$isim_isim sayisi :"+isim_isim+"$");
bufferWritter.newLine();
bufferWritter.write("$isim_fiil sayisi :"+isim_fiil+"$");
bufferWritter.newLine();
bufferWritter.write("$zarf_fiil sayisi :"+zarf_fiil+"$");
bufferWritter.newLine();
bufferWritter.write("##############################");
bufferWritter.flush();
bufferWritter.close();

如果while循环发生错误,文件将被关闭而不写入数据。如果我在 while 循环中使用 flush 函数,那我为什么要使用 BufferedWriter?如果我错了,请纠正我。

最佳答案

根据定义,缓冲写入器会缓冲数据,并且仅在内存中有足够的内存时才写入数据,以避免过多往返文件系统。

如果您正确处理异常,并像往常一样在 finally block 中关闭您的流,缓冲区将被刷新到磁盘,并且到目前为止写入缓冲写入器的所有内容都将写入磁盘(除非当然这个异常恰恰是写盘错误引起的)。

因此,解决方案不是每次写入时都刷新,因为这会破坏缓冲写入器的目的。解决方案是在 finally block 中关闭(或使用 Java 7 trye-with-resources 语句,它会为您完成)。

关于java - BufferedWriter 在 Java 中是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14462705/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com