我已經看到了這個術語,但我並不真正瞭解如何在內存中打開文件。如何在內存中打開文件?
我有文件寫在磁盤上的臨時位置,但這需要清理時,特定的窗體關閉,我不能做它打開時。這個文件夾必須清空。我想知道如果我在內存中打開文件,而不是它會有所作爲?
我已經看到了這個術語,但我並不真正瞭解如何在內存中打開文件。如何在內存中打開文件?
我有文件寫在磁盤上的臨時位置,但這需要清理時,特定的窗體關閉,我不能做它打開時。這個文件夾必須清空。我想知道如果我在內存中打開文件,而不是它會有所作爲?
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