Как открыть файл в памяти? - PullRequest
18 голосов
/ 03 июня 2011

Я вижу этот термин как фирменный, но я не совсем понимаю, как вы открываете файл в памяти.

У меня есть файлы, записанные на диск во временной папке, но это требует очистки, когда определенная формазакрывается, и я не могу сделать это, когда он открыт.Обязательно, чтобы эта папка была очищена.Мне было интересно, если бы я открыл файлы в памяти вместо этого, будет ли это иметь значение?

Ответы [ 4 ]

44 голосов
/ 03 июня 2011
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
4 голосов
/ 03 июня 2011

Я думаю, что вы хотите работать с файлами сопоставления памяти, недавно добавленными в .NET 4.

http://blogs.msdn.com/b/salvapatuel/archive/2009/06/08/working-with-memory-mapped-files-in-net-4.aspx

Файлы сопоставления памяти .NET

2 голосов
/ 03 июня 2011

Я думаю, что это означает прочитать содержимое этого файла в память в целом и затем закрыть соединение с файлом. Предполагая, что это не слишком большой файл, вы можете просто прочитать его в байт []:

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

Если это текстовый файл, прочитайте его в строку, используя

string fileContent = File.ReadAllText(fileName);

Как только вы это сделаете, используйте StreamReader, чтобы прочитать его позже, как файл на диске.

2 голосов
/ 03 июня 2011

Вы можете использовать DeleteOnClose параметр конструктора FileStream:

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

, и файл будет удален при закрытии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...