在C#中缓存二进制文件

6 c# caching file filestream

是否可以在.NET中缓存二进制文件并在缓存文件上执行普通文件操作?

Nol*_*rin 14

做到这一点的方法是阅读从整个内容FileStream到一个MemoryStream对象,然后用这个对象的I/O以后.两种类型都继承自Stream,因此用法实际上是相同的.

这是一个例子:

private MemoryStream cachedStream;

public void CacheFile(string fileName)
{
    cachedStream = new MemoryStream(File.ReadAllBytes(fileName));
}
Run Code Online (Sandbox Code Playgroud)

因此CacheFile,当您想要缓存给定文件时,只需调用该方法一次,然后在代码中的任何其他位置cachedStream用于读取.(实际文件在缓存其内容后将立即关闭.)唯一要记住的是cachedStream在完成后将其处理掉.

  • +1:我认为这可能实际上是提问者想要的. (4认同)
  • 是的,当文件大小接近RAM的大小时,这种方法当然不再有用.到那时,你应该使用数据库服务器,所以我认为这不会是一个问题. (2认同)