【发布时间】:2011-09-07 19:33:30
【问题描述】:
我已经看到了这个术语,但我真的不明白你是如何在内存中打开文件的。
我将文件写入临时位置的磁盘,但是当某个表单关闭时需要清理,而当它打开时我无法执行此操作。必须清空此文件夹。我想知道如果我在内存中打开文件是否会有所不同?
【问题讨论】:
-
这完全取决于你在做什么。
-
我的缩略图显示在右侧 - 用户双击一个,它会打开 pdf 文件。
我已经看到了这个术语,但我真的不明白你是如何在内存中打开文件的。
我将文件写入临时位置的磁盘,但是当某个表单关闭时需要清理,而当它打开时我无法执行此操作。必须清空此文件夹。我想知道如果我在内存中打开文件是否会有所不同?
【问题讨论】:
你可以使用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 稍后读取它,就像读取磁盘上的文件一样。
【讨论】:
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
【讨论】:
【讨论】: