Java 对CSVPrinter对象调用close()两次
对已关闭的CSVPrinter实例调用close()是否为不可操作?那flush()呢?找不到关于此的任何文档 对已关闭的CSVPrinter实例调用close()是否为不可操作Java 对CSVPrinter对象调用close()两次,java,Java,对已关闭的CSVPrinter实例调用close()是否为不可操作?那flush()呢?找不到关于此的任何文档 对已关闭的CSVPrinter实例调用close()是否为不可操作 Closable的标准约定是调用close()是幂等的。CSVPrinter类实现了Closeable 找不到关于此的任何文档 它位于for可关闭的中 那flush()呢 不清楚你在问什么 调用flush() 在关闭的对象上调用flush()是多余的,在调用close()之前调用flush()也是多余的。(如有必要,
Closable
的标准约定是调用close()
是幂等的。CSVPrinter
类实现了Closeable
找不到关于此的任何文档
它位于for可关闭的
中
那flush()呢
不清楚你在问什么
- 调用
flush()
- 在关闭的对象上调用
是多余的,在调用flush()
之前调用close()
也是多余的。(如有必要,Aflush()
将尝试刷新。)close()
flush()
行为的通用规范没有说明在刷新封闭流时应该发生什么。在CSVPrinter
的情况下,flush()
委托给打印机正在包装的可追加的
。因此,无法指定关闭打印机上的CSVPrinter.flush()
行为
但是考虑到不确定性,简单的解决方案是在close()
之前不要调用flush()
。只有在您不打算关闭并且迫切需要推送数据时才刷新。。。现在
(不必要的刷新否定了缓冲在Java空间和内核I/O堆栈中的性能优势。)
对已关闭的CSVPrinter实例调用close()是否为不可操作
Closable
的标准约定是调用close()
是幂等的。CSVPrinter
类实现了Closeable
找不到关于此的任何文档
它位于for可关闭的
中
那flush()呢
不清楚你在问什么
- 调用
flush()
- 在关闭的对象上调用
是多余的,在调用flush()
之前调用close()
也是多余的。(如有必要,Aflush()
将尝试刷新。)close()
flush()
行为的通用规范没有说明在刷新封闭流时应该发生什么。在CSVPrinter
的情况下,flush()
委托给打印机正在包装的可追加的
。因此,无法指定关闭打印机上的CSVPrinter.flush()
行为
但是考虑到不确定性,简单的解决方案是在close()
之前不要调用flush()
。只有在您不打算关闭并且迫切需要推送数据时才刷新。。。现在
(在Java空间和内核的I/O堆栈中,不必要的刷新否定了缓冲的性能优势。)为什么不尝试一下呢?我想尝试一下比在这里询问要花更少的时间。@ScaryWombat尝试并不能证明什么。它可能有时工作,有时失败。Stephen C的回答是正确的-只需查看已实现接口的文档。有时我希望有一个选项来否决评论:-)为什么不试试?我想试试比在这里提问要花更少的时间。@ScaryWombat尝试并不能证明什么。它可能有时工作,有时失败。Stephen C回答是正确的-只需查看已实现接口的文档。有时我希望有一个选项来否决注释:-)
flush
在封闭对象上可能会失败(不确定CSVPrinter
的特定实现,但Flushable
的其他实现可能会失败)。我的意思是:-)关闭对象上的flush
可能会失败(不确定CSVPrinter
的特定实现,但Flushable
的其他实现可能会失败)。我的意思是:-)