C# 如何在内存中打开文件?

C# 如何在内存中打开文件?,c#,file-io,C#,File Io,我已经看到这个术语被打上烙印,但我真的不明白如何在内存中打开文件 我将文件写入临时位置的磁盘,但当某个窗体关闭时需要清理,而当它打开时我无法清理。必须清空此文件夹。我想知道我是否在内存中打开了文件,这是否会有所不同?我想您希望使用最近添加到.NET 4的内存映射文件 您可以使用FileStream构造函数的DeleteOnClose参数: FileStream fs = new FileStream("<Path Here>", FileMode.Create, FileA

我已经看到这个术语被打上烙印,但我真的不明白如何在内存中打开文件


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

我想您希望使用最近添加到.NET 4的内存映射文件


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

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

关闭时文件将被删除。

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

byte[] fileContent = File.ReadAllBytes(fileName);
如果是文本文件,则使用

string fileContent = File.ReadAllText(fileName);

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

这完全取决于您正在执行的操作。我在右侧显示了缩略图-用户双击其中一个,它会打开pdf文件。想法不错,但内存映射文件仍保留其到原始文件的映射,并在内存中写回任何内容取消映射后对文件所做的更改,因此在这种情况下没有太大用处。dam it,我们使用的是.net 3.5,因此我不能使用fs.CopyTo。您可以自己轻松复制CopyTo扩展名方法。在这里搜索。你是说在流上搜索“复制到扩展”方法吗?是的,有一些非常好的建议模仿.net 4中的原始CopyTo方法。文件流变成输入,内存流变成输出,对吗?然后如何显示该文件?对不起,我很痛苦,我只是非常困惑!
string fileContent = File.ReadAllText(fileName);