2017-07-13 69 views
0

我读过,打开和关闭文件编写器可能会有点繁重的操作。那么保持一个文件编写者一直打开是可以的吗?可以让档案作者始终保持开放状态吗?

+1

什么是所有的时间? –

+4

你从哪里读到这个?你真的解决了任何性能问题吗? – tnw

+0

k.krol:我只是问,不记得我在哪里读它,也许在这里 - tnw所有的时间都是服务的所有生活 – loki

回答

2

通过保持开放状态,您可能不得不担心CommonsWare在您的问题的评论中指出的完整性。我认为这样做的唯一原因是减少开放正确的时间?从安全角度来看,这并不需要太多时间,所以在完成主动写入文件并在需要时重新打开而不是在应用程序的整个生命周期中保持打开时关闭它会更好。

2

如果“所有的时间”意味着你的程序的持续时间,那么答案是是的。关闭文件编写器的目的是确保写入文件的所有数据都写入文件。写入时,优化会使I/O进程更快,因此操作系统通常会写请求并将其写入缓存或缓冲区,然后当缓冲区满时,它会将所有内容批量写入到文件作为一个I/O,而不是可能的数百个。关闭文件写入器会通过告诉操作系统将缓冲区写入文件来刷新此缓冲区,即使该文件可能未满。在大多数情况下,退出程序会自动关闭任何开放的读者/作者,但最好的做法是明确写出关闭行,因为显式总是优于隐式。

这并不是全部关闭作家,但它是这样做的主要原因。关闭作家也会结束该文件的通道,因此出于安全考虑,您应该在不使用时关闭作者。调用open/close的唯一原因是昂贵的,因为您在这样做时创建I/O。所以,如果你可以消除呼叫(即在循环之外而不是在内部呼叫打开/关闭),这将是有益的,但是不要觉得你需要一个开放和一个接近终生使用该作者的时间。

相关问题