Обработка отображенного в память файла в C # непосредственно из памяти - PullRequest
6 голосов
/ 23 января 2012

Можно ли открыть файл с отображением в памяти в C # напрямую, как при открытии файлов непосредственно в Windows, например, я создаю файл с отображением в памяти.через следующий код.

using System;
using System.IO.MemoryMappedFiles;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main()
        {
            MemoryMappedFile mmf = MemoryMappedFile.CreateNew("test.txt", 5);
            MemoryMappedViewAccessor accessor = mmf.CreateViewAccessor();
            var arun = new[] {(byte)'a', (byte)'r', (byte)'u', (byte)'n'};
            for (int i = 0; i < arun.Length; i++)
                accessor.Write(i, arun[i]);
            Console.WriteLine("Memory-mapped file created!");
            Console.ReadLine(); // pause till enter key is pressed
            accessor.Dispose();
            mmf.Dispose();
        }
    }
}

Мне нужно открыть файл напрямую.Возможно ли, например, открыть файл через

Process.start("test.txt");

из другого процесса вместо чтения значений по коду.

 MemoryMappedFile mmf1 = MemoryMappedFile.OpenExisting("test.txt");
 MemoryMappedViewAccessor accessor1 = mmf1.CreateViewAccessor();
 var  value = accessor1.ReadByte(4);    

Если возможно открыть файл, отображенный в памятьнапрямую?Пожалуйста, дайте мне знать.

Ответы [ 2 ]

4 голосов
/ 23 января 2012

Начиная с версии .NET Framework 4, вы можете использовать управляемый код для доступа к отображенным в памяти файлам так же, как в Windows функции обращаются к отображенным в памяти файлам, как описано в разделе «Управление». Отображенные в память файлы в Win32 в библиотеке MSDN.

2 голосов
/ 24 января 2012

Метод MemoryMappedFile.CreateNew создает объект сопоставления файлов, который не связан с файлом на диске. Так что нет, вы не можете открыть файл напрямую, потому что его нет. (Такие объекты сопоставления файлов поддерживаются системным файлом подкачки, как описано здесь .)

Вместо этого можно использовать метод MemoryMappedFile.CreateFromFile , если вы хотите связать объект сопоставления файлов с реальным файлом.

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