2011-06-03 97 views
18

我已經看到了這個術語,但我並不真正瞭解如何在內存中打開文件。如何在內存中打開文件?

我有文件寫在磁盤上的臨時位置,但這需要清理時,特定的窗體關閉,我不能做它打開時。這個文件夾必須清空。我想知道如果我在內存中打開文件,而不是它會有所作爲?

+1

這完全取決於你在做什麼。 – SLaks 2011-06-03 12:58:14

+0

我的縮略圖顯示在右側 - 用戶雙擊一個,它打開PDF文件。 – rik 2011-06-03 12:59:47

回答

41
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 
+0

dam it,我們正在使用.net 3.5,因此我無法使用fs.copyto – rik 2011-06-03 13:10:48

+0

您可以輕鬆地自行復制該CopyTo擴展方法。在這裏搜索。 – 2011-06-03 13:13:20

+0

你的意思是搜索堆棧溢出複製到擴展方法? – rik 2011-06-03 13:24:57

2

可以使用DeleteOnClose參數FileStream構造的工作:

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

,關閉時文件將被刪除。

2

我認爲這意味着將該文件的內容作爲一個整體讀入內存,然後關閉與該文件的連接。假設它,這不是太大的文件,你可能只是讀入一個byte []:

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

如果它是一個文本文件讀入使用

string fileContent = File.ReadAllText(fileName); 

字符串一旦你做到了這一點使用StreamReader稍後閱讀它,就像在磁盤上創建文件一樣。