Создание отображения файла в оперативную память - C#

Узнай цену своей работы

Формулировка задачи:

Нужно создать отображение файла в ОЗУ. Делается так:
  var   mmf = MemoryMappedFile.CreateFromFile(@"c:\file.data", FileMode.Open, "ImgA");
И вывести в этот файл результат сортировки рандомного массива. С сортировкой проблем нету. Вопрос: 1.Можно ли работать с .txt файлом или нужно работать с файлом типа .data? 1.1 Если нужно использовать .data файл, то как его создать? Нужно использовать что то вроде MySql? 2. Как получить доступ к памяти, т.е. вывести результят сортировки, можно пример?
Реализовал вот так:
 private void button1_Click(object sender, EventArgs e)
        {
          
            using (var mmf = MemoryMappedFile.CreateFromFile(@"c:\123.txt", FileMode.Open, "ImgA"))
         {
            
             using (var accessor = mmf.CreateViewAccessor())
             {
               /*  int i = 666999;
                 accessor.Write(0,i);*/
                 accessor.Write(0, '2');
                 accessor.Write(1, '3');
             }
         }
          // string text = "1234567890";
           // System.IO.File.WriteAllText(@"c:\123.txt", text);
        }
Методы аксесора указаны здесь: http://msdn.microsoft.com/ru-ru/libr...waccessor.aspx Данные типа "Char" выводит нормально. Методу "Write" передаю номер позиции для записи, через запятую символ. А как передать переменную типа "String" если нет такого метода? Ведь мне нужно передавать до миллиона трехзначных чисел. Запись по одному символу, наверное, не лучший вариант. Хотелось бы через "String". Второстепенный вопрос: При попытке передать параметр типа "int" - получаются непонятные символы. Скорее всего не та кодировка... Как узнать кодировку?

Решение задачи: «Создание отображения файла в оперативную память»

textual
Листинг программы
string s  = "helloworld";
 
                var file = MemoryMappedFile.CreateFromFile(@"c:\123.txt", FileMode.Open, Name, s.Length); // последний параметр - размер выделяемой памяти
                
                using (var streamwriter = new StreamWriter(file.CreateViewStream()))
                {
                    streamwriter.WriteLine(s);
                    streamwriter.Close();
                }
                file.Dispose();

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.6 из 5
Похожие ответы