【问题标题】:Java- Streams with bufferedJava-带缓冲的流
【发布时间】:2019-03-16 19:25:44
【问题描述】:

所以最近我学会了使用流,包括输入和输出来学习,这样我就可以从文件中读取并写入文件。但是我的老师有时会决定使用缓冲,有时他不会。就像在这种情况下生病发布代码一样。你们明白他为什么在这种情况下没有放一个缓冲的输出流吗?

  public void writePrimes2(String filename) throws IOException {
        try(ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream(filename))){
            os.writeObject(primes);
            os.flush();
        }
    }

【问题讨论】:

  • 缓冲比非缓冲快。也许他不想写一些额外的代码?

标签: java


【解决方案1】:

BufferedOutputStream 和 FileOutputStream 的工作方式类似。内部 BufferedOutputStream 写入内部缓冲区而不是直接写入操作系统 IO 设备,当缓冲区已满或关闭时,它会将缓冲区的内容刷新到 OS IO 设备。这在某些操作系统上可能更有效/更快。但结果是输出可能会因为缓冲而出现轻微延迟。

【讨论】:

  • 非常感谢!但我不明白的是,您在哪些情况下选择使用缓冲或文件输出。
  • [The Java Tutorials/IO ]docs.oracle.com/javase/tutorial/essential/io/index.html 有一些很好的解释。与 BufferedOutputStream 相比,FileOutputStream 被认为是原始/低级别,并且应该与二进制/原始数据(例如图像文件)一起使用。
【解决方案2】:

ObjectOutputStream 用于序列化对象的状态(实例变量的值)。如果对象足够小,那么整个操作可能会足够快。

【讨论】:

    猜你喜欢
    • 2012-10-08
    • 1970-01-01
    • 1970-01-01
    • 2015-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-30
    • 1970-01-01
    相关资源
    最近更新 更多