首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BufferedWriter优势

BufferedWriter优势
EN

Stack Overflow用户
提问于 2014-01-05 10:54:12
回答 3查看 2.1K关注 0票数 0

我有以下方法:

代码语言:javascript
复制
public void writeToFile(
  String id, 
  String no, 
  int systol, 
  int diastol, 
  int pulsDiff, 
  double speedAvg, 
  double spread
) { 
  String line = 
    id + "\t" + no + "\t" + systol + "/" + diastol + "\t" + pulsDiff 
    + "\t" + speedAvg + "\t" + spread + "\r\n";

    File fil = new File("resultat.txt");
    BufferedWriter writer = null;
    try { 
      writer = new BufferedWriter(new FileWriter(fil, true)); 
      writer.write(line); 
      writer.close();
    } catch (Exception e) {
      System.err.println("Fejl: " + e.getMessage());
    }

这可能是以不同的方式进行的吗?用不同的方法?这样做有什么好处呢?

我试着理解拥有bufferedWriter的好处。我还在开头,我正试着理解这句话:“

通常,Writer将其输出立即发送到基础字符或字节流。除非需要提示输出,否则最好将BufferedWriter封装在任何写操作可能代价高昂的Writer (例如FileWriters和OutputStreamWriters )周围。例如,

代码语言:javascript
复制
 PrintWriter out    = new PrintWriter(new BufferedWriter(new 
     FileWriter("foo.out")));   

将把PrintWriter的输出缓冲到文件中。在没有缓冲的情况下,每次调用print()方法都会导致字符被转换成字节,然后将字节立即写入文件中,这可能非常低效。

特别是“通常情况下,Writer将其输出立即发送到基础字符或字节流”部分。

EN

回答 3

Stack Overflow用户

发布于 2014-01-05 11:00:17

因为您正在为编写器编写一个字符串,所以在这种情况下缓冲是无用的。

但是,真正应该修复的是异常处理和关闭作者的方式。如果写入或关闭没有成功,则应该使用异常警告调用方,而不是简单地记录错误并继续进行,就好像什么都没有发生一样。

并且作者应该在一个最后的块中关闭,或者使用try-构造,以确保它总是关闭的。

票数 4
EN

Stack Overflow用户

发布于 2014-01-05 11:04:32

假设您是一个与操作系统对话的Java指令。如果没有缓冲,情况就像(大大简化了):

代码语言:javascript
复制
Java -> OS: Hello, operating system, I'd like to write character c to file F
OS -> HDD : Hello, disk, please append character c to file F
HDD -> OS after a few milliseconds : I'm done.
OS -> Java : Done

如果你把许多字符写到一个文件中,这种交流是不必要的--他们仍然在谈论同样的问题,这是浪费时间!所以我们才用缓冲器。看看情况如何变化:

代码语言:javascript
复制
Java -> OS: Hello, operating system, I'd like to write bunch of characters c[] to file F
OS -> HDD : Hello, disk, please append characters c[] to file F
HDD -> OS after a few tens of milliseconds : I'm done.
OS -> Java : Done

句号。整个机器,所有的磁盘,等等,只被调用一次。

票数 2
EN

Stack Overflow用户

发布于 2014-01-05 10:59:25

使用BufferedReaderBufferedWriter的优点是减少了从磁盘读取和写入磁盘的物理数据的数量。它利用缓冲系统,同时执行读写操作。因此,效率更高。您可以尝试使用或者不使用BufferedReader/BufferedWriter来读取/写入一个大文件,并查看不同之处。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20932697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档