我已经看到了这个术语,但我并不真正了解如何在内存中打开文件。如何在内存中打开文件?
我有文件写在磁盘上的临时位置,但这需要清理时,特定的窗体关闭,我不能做它打开时。这个文件夹必须清空。我想知道如果我在内存中打开文件,而不是它会有所作为?
我已经看到了这个术语,但我并不真正了解如何在内存中打开文件。如何在内存中打开文件?
我有文件写在磁盘上的临时位置,但这需要清理时,特定的窗体关闭,我不能做它打开时。这个文件夹必须清空。我想知道如果我在内存中打开文件,而不是它会有所作为?
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
我想你想与最近添加到.NET内存映射文件4.
思路良好但内存映射文件仍保留其对原始文件的映射,并在解除映射后将任何内存中的更改写回到该文件,因此在这种情况下没有用处。 – 2011-06-03 13:07:41
可以使用DeleteOnClose
参数FileStream
构造的工作:
FileStream fs = new FileStream("<Path Here>", FileMode.Create,
FileAccess.ReadWrite, FileShare.None, 1024, FileOptions.DeleteOnClose);
,关闭时文件将被删除。
我认为这意味着将该文件的内容作为一个整体读入内存,然后关闭与该文件的连接。假设它,这不是太大的文件,你可能只是读入一个byte []:
byte[] fileContent = File.ReadAllBytes(fileName);
如果它是一个文本文件读入使用
string fileContent = File.ReadAllText(fileName);
字符串一旦你做到了这一点使用StreamReader稍后阅读它,就像在磁盘上创建文件一样。
这完全取决于你在做什么。 – SLaks 2011-06-03 12:58:14
我的缩略图显示在右侧 - 用户双击一个,它打开PDF文件。 – rik 2011-06-03 12:59:47