Разобрать код, в котором создается поток типа MemoryStream с помощью конструктора - C#
Формулировка задачи:
using System; using System.IO; class MemStrDemo { static void Main() { byte[] storage = new byte[255]; // Create a memory-based stream. MemoryStream memstrm = new MemoryStream(storage); // Wrap memstrm in a reader and a writer. StreamWriter memwtr = new StreamWriter(memstrm); StreamReader memrdr = new StreamReader(memstrm); try { // Write to storage, through memwtr. for(int i=0; i < 10; i++) memwtr.WriteLine("byte [" + i + "]: " + i); // Put a period at the end. memwtr.WriteLine("."); memwtr.Flush(); Console.WriteLine("Reading from storage directly: "); // Display contents of storage directly. foreach(char ch in storage) { if (ch == '.') break; Console.Write(ch); } Console.WriteLine("\nReading through memrdr: "); // Read from memstrm using the stream reader. memstrm.Seek(0, SeekOrigin.Begin); // reset file pointer string str = memrdr.ReadLine(); while(str != null) { str = memrdr.ReadLine(); if(str[0] == '.') break; Console.WriteLine(str); } } catch(IOException exc) { Console.WriteLine("I/O Error\n" + exc.Message); } finally { // Release reader and writer resources. memwtr.Close(); memrdr.Close(); } } }
memwtr.WriteLine("byte [" + i + "]: " + i)
. Правильно ли я понимаю, что здесь каждый элемент массива storage - это минимальная единица хранения информации? Например, если вывести storage[0] - будет b, storage[1] -y, storage[2] - t и т.д. Вопрос только в том как метод WriteLine "ложится" на этот массив? Строка разбивается на отдельный символ, затем он преобразуется в байт, и потом уже присваивается каждому элементу массива ?(причем последний символ - это '\n'?) 2.memwtr.Flush(); - это что-то вроде "записать"? 3. Дальше, еще хуже... почему тутforeach(char ch in storage) { if (ch == '.') break; Console.Write(ch); }
используется переменная типа char для перебора значений storage, когда у нас массив типа byte ? 4. Теперь начинается ввод данных.string str = memrdr.ReadLine();
Опять-таки здесь метод ReadLine() будет считывать каждый байт (он же элемент массив) в отдельности, затем преобразовывать в символ и "класть" в строку str? (пока не встретить '\n')? Надеюсь не сумбурно получилось Спасибо.Решение задачи: «Разобрать код, в котором создается поток типа MemoryStream с помощью конструктора»
textual
Листинг программы
memwtr.WriteLine("byte [{0}]: {1}", i, i);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д