如何在内存中打开文件

本文关键字:文件 内存 | 更新日期: 2023-09-27 17:58:23

我见过这个术语,但我真的不明白如何在内存中打开文件。

我在一个临时位置将文件写入磁盘,但当某个窗体关闭时需要清理,而当它打开时我无法进行清理。必须清空此文件夹。我想知道,如果我打开内存中的文件,这是否会有所不同?

如何在内存中打开文件

MemoryStream inMemoryCopy = new MemoryStream();
using (FileStream fs = File.OpenRead(path))
{
  fs.CopyTo(inMemoryCopy);
}
// Now you can delete the file at 'path' and still have an in memory copy

我认为您希望使用最近添加到.NET4中的内存映射文件。

http://blogs.msdn.com/b/salvapatuel/archive/2009/06/08/working-with-memory-mapped-files-in-net-4.aspx

内存映射文件.NET

您可以使用FileStream构造函数的DeleteOnClose参数:

FileStream fs = new FileStream("<Path Here>", FileMode.Create,
    FileAccess.ReadWrite, FileShare.None, 1024, FileOptions.DeleteOnClose);

并且该文件将在关闭时被删除。

我认为这意味着将该文件的内容作为一个整体读取到内存中,然后关闭与该文件的连接。假设它是一个不太大的文件,你可以把它读成一个字节[]:

byte[] fileContent = File.ReadAllBytes(fileName);

如果是文本文件,请使用将其读取为字符串

string fileContent = File.ReadAllText(fileName);

完成后,使用StreamReader稍后读取它,就像读取磁盘上的文件一样。