12

在我的 Web 服务中,我打开一个指向本地磁盘上文件的文件流。我会在服务的整个生命周期内保留它。对于传入的每个查询,我使用文件流来读取磁盘。我这样做是为了避免在每次查询时都必须重新打开文件流。这条路径的延迟很关键(应该少于几毫秒)。我使用 SSD 将磁盘 IO 时间保持在 0.1 毫秒或更短。

文件流能否在很长一段时间(几天)内“变坏”(变得无效)。在每个查询中重新打开文件流是否更安全?如果我必须重新打开,那么每秒多次重新打开文件流的开销是多少?

4

2 回答 2

7

只要您需要,就可以安全地保持文件打开。

这对你的案子有好处吗 - 你需要自己决定。重新打开文件不应该很慢(即使在普通驱动器上),但您需要尝试衡量自己,但您知道自己的确切性能目标。

于 2012-11-07T19:14:59.290 回答
6

让文件保持打开状态的唯一问题是应用程序是否因任何原因而失败,并且无法从当前位置恢复以关闭流;用于打开文件的CreateFile入口点执行以下语句:KERNEL32

当应用程序使用完 CreateFile 返回的对象句柄时,使用 CloseHandle 函数关闭句柄。这不仅可以释放系统资源,而且可以对共享文件或设备以及将数据提交到磁盘等事情产生更广泛的影响。本主题中会酌情注明具体细节。

FileStream所以我认为每次都打开和关闭更合适。

于 2012-11-07T19:21:14.637 回答