🗊 Презентация Организация файлового ввода/вывода. Лекция 23

Нажмите для полного просмотра!
Организация файлового ввода/вывода. Лекция 23, слайд №1 Организация файлового ввода/вывода. Лекция 23, слайд №2 Организация файлового ввода/вывода. Лекция 23, слайд №3 Организация файлового ввода/вывода. Лекция 23, слайд №4 Организация файлового ввода/вывода. Лекция 23, слайд №5 Организация файлового ввода/вывода. Лекция 23, слайд №6 Организация файлового ввода/вывода. Лекция 23, слайд №7 Организация файлового ввода/вывода. Лекция 23, слайд №8 Организация файлового ввода/вывода. Лекция 23, слайд №9 Организация файлового ввода/вывода. Лекция 23, слайд №10 Организация файлового ввода/вывода. Лекция 23, слайд №11 Организация файлового ввода/вывода. Лекция 23, слайд №12 Организация файлового ввода/вывода. Лекция 23, слайд №13 Организация файлового ввода/вывода. Лекция 23, слайд №14 Организация файлового ввода/вывода. Лекция 23, слайд №15 Организация файлового ввода/вывода. Лекция 23, слайд №16 Организация файлового ввода/вывода. Лекция 23, слайд №17 Организация файлового ввода/вывода. Лекция 23, слайд №18 Организация файлового ввода/вывода. Лекция 23, слайд №19 Организация файлового ввода/вывода. Лекция 23, слайд №20 Организация файлового ввода/вывода. Лекция 23, слайд №21 Организация файлового ввода/вывода. Лекция 23, слайд №22 Организация файлового ввода/вывода. Лекция 23, слайд №23 Организация файлового ввода/вывода. Лекция 23, слайд №24 Организация файлового ввода/вывода. Лекция 23, слайд №25 Организация файлового ввода/вывода. Лекция 23, слайд №26 Организация файлового ввода/вывода. Лекция 23, слайд №27 Организация файлового ввода/вывода. Лекция 23, слайд №28 Организация файлового ввода/вывода. Лекция 23, слайд №29 Организация файлового ввода/вывода. Лекция 23, слайд №30 Организация файлового ввода/вывода. Лекция 23, слайд №31 Организация файлового ввода/вывода. Лекция 23, слайд №32 Организация файлового ввода/вывода. Лекция 23, слайд №33 Организация файлового ввода/вывода. Лекция 23, слайд №34 Организация файлового ввода/вывода. Лекция 23, слайд №35 Организация файлового ввода/вывода. Лекция 23, слайд №36 Организация файлового ввода/вывода. Лекция 23, слайд №37 Организация файлового ввода/вывода. Лекция 23, слайд №38 Организация файлового ввода/вывода. Лекция 23, слайд №39 Организация файлового ввода/вывода. Лекция 23, слайд №40 Организация файлового ввода/вывода. Лекция 23, слайд №41 Организация файлового ввода/вывода. Лекция 23, слайд №42 Организация файлового ввода/вывода. Лекция 23, слайд №43 Организация файлового ввода/вывода. Лекция 23, слайд №44 Организация файлового ввода/вывода. Лекция 23, слайд №45 Организация файлового ввода/вывода. Лекция 23, слайд №46 Организация файлового ввода/вывода. Лекция 23, слайд №47 Организация файлового ввода/вывода. Лекция 23, слайд №48 Организация файлового ввода/вывода. Лекция 23, слайд №49 Организация файлового ввода/вывода. Лекция 23, слайд №50 Организация файлового ввода/вывода. Лекция 23, слайд №51 Организация файлового ввода/вывода. Лекция 23, слайд №52 Организация файлового ввода/вывода. Лекция 23, слайд №53 Организация файлового ввода/вывода. Лекция 23, слайд №54 Организация файлового ввода/вывода. Лекция 23, слайд №55 Организация файлового ввода/вывода. Лекция 23, слайд №56 Организация файлового ввода/вывода. Лекция 23, слайд №57 Организация файлового ввода/вывода. Лекция 23, слайд №58 Организация файлового ввода/вывода. Лекция 23, слайд №59 Организация файлового ввода/вывода. Лекция 23, слайд №60 Организация файлового ввода/вывода. Лекция 23, слайд №61 Организация файлового ввода/вывода. Лекция 23, слайд №62 Организация файлового ввода/вывода. Лекция 23, слайд №63 Организация файлового ввода/вывода. Лекция 23, слайд №64 Организация файлового ввода/вывода. Лекция 23, слайд №65 Организация файлового ввода/вывода. Лекция 23, слайд №66 Организация файлового ввода/вывода. Лекция 23, слайд №67 Организация файлового ввода/вывода. Лекция 23, слайд №68 Организация файлового ввода/вывода. Лекция 23, слайд №69 Организация файлового ввода/вывода. Лекция 23, слайд №70 Организация файлового ввода/вывода. Лекция 23, слайд №71 Организация файлового ввода/вывода. Лекция 23, слайд №72 Организация файлового ввода/вывода. Лекция 23, слайд №73 Организация файлового ввода/вывода. Лекция 23, слайд №74 Организация файлового ввода/вывода. Лекция 23, слайд №75 Организация файлового ввода/вывода. Лекция 23, слайд №76 Организация файлового ввода/вывода. Лекция 23, слайд №77 Организация файлового ввода/вывода. Лекция 23, слайд №78 Организация файлового ввода/вывода. Лекция 23, слайд №79 Организация файлового ввода/вывода. Лекция 23, слайд №80 Организация файлового ввода/вывода. Лекция 23, слайд №81 Организация файлового ввода/вывода. Лекция 23, слайд №82 Организация файлового ввода/вывода. Лекция 23, слайд №83 Организация файлового ввода/вывода. Лекция 23, слайд №84 Организация файлового ввода/вывода. Лекция 23, слайд №85 Организация файлового ввода/вывода. Лекция 23, слайд №86 Организация файлового ввода/вывода. Лекция 23, слайд №87 Организация файлового ввода/вывода. Лекция 23, слайд №88 Организация файлового ввода/вывода. Лекция 23, слайд №89 Организация файлового ввода/вывода. Лекция 23, слайд №90 Организация файлового ввода/вывода. Лекция 23, слайд №91 Организация файлового ввода/вывода. Лекция 23, слайд №92 Организация файлового ввода/вывода. Лекция 23, слайд №93 Организация файлового ввода/вывода. Лекция 23, слайд №94 Организация файлового ввода/вывода. Лекция 23, слайд №95 Организация файлового ввода/вывода. Лекция 23, слайд №96 Организация файлового ввода/вывода. Лекция 23, слайд №97 Организация файлового ввода/вывода. Лекция 23, слайд №98 Организация файлового ввода/вывода. Лекция 23, слайд №99 Организация файлового ввода/вывода. Лекция 23, слайд №100 Организация файлового ввода/вывода. Лекция 23, слайд №101 Организация файлового ввода/вывода. Лекция 23, слайд №102 Организация файлового ввода/вывода. Лекция 23, слайд №103 Организация файлового ввода/вывода. Лекция 23, слайд №104 Организация файлового ввода/вывода. Лекция 23, слайд №105 Организация файлового ввода/вывода. Лекция 23, слайд №106

Содержание

Вы можете ознакомиться и скачать презентацию на тему Организация файлового ввода/вывода. Лекция 23. Доклад-сообщение содержит 106 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1


Лекция 23 Организация файлового ввода/вывода
Описание слайда:
Лекция 23 Организация файлового ввода/вывода

Слайд 2


Потоки Поток — это некая абстракция производства или потребления информации. С физическим устройством поток связывает система ввода-вывода. Все...
Описание слайда:
Потоки Поток — это некая абстракция производства или потребления информации. С физическим устройством поток связывает система ввода-вывода. Все потоки действуют одинаково — даже если они связаны с разными физическими устройствами (дисковый файл, сетевой канал, место в памяти или любой другой объект, поддерживающий чтение и запись в линейном режиме). Существуют два типа потоков: □ Выходные □ Входные

Слайд 3


Байтовые и символьные потоки В среде .NET Framework определены классы как для байтовых, так и для символьных потоков. Но на самом деле классы...
Описание слайда:
Байтовые и символьные потоки В среде .NET Framework определены классы как для байтовых, так и для символьных потоков. Но на самом деле классы символьных потоков служат лишь оболочками для превращения заключенного в них байтового потока в символьный, автоматически выполняя любые требующиеся преобразования типов данных. Следовательно, символьные потоки основываются на байтовых, хотя они и разделены логически. Основные классы потоков определены в пространстве имен System.IO.

Слайд 4


Некоторые классы System.IO
Описание слайда:
Некоторые классы System.IO

Слайд 5


Некоторые классы System.IO
Описание слайда:
Некоторые классы System.IO

Слайд 6


Некоторые классы System.IO
Описание слайда:
Некоторые классы System.IO

Слайд 7


Некоторые классы System.IO
Описание слайда:
Некоторые классы System.IO

Слайд 8


Класс Stream
Описание слайда:
Класс Stream

Слайд 9


Класс Stream
Описание слайда:
Класс Stream

Слайд 10


Класс Stream
Описание слайда:
Класс Stream

Слайд 11


Класс Stream
Описание слайда:
Класс Stream

Слайд 12


Порядок работы с файлом 1. Подключить пространство имен, в котором описываются стандартные классы для работы с файлами. 2. Объявить файловую...
Описание слайда:
Порядок работы с файлом 1. Подключить пространство имен, в котором описываются стандартные классы для работы с файлами. 2. Объявить файловую переменную и связать ее с файлом на диске. 3. Выполнить операции ввода-вывода. 4. Закрыть файл.

Слайд 13


Класс FileStream FileStream представляет доступ к файлам на уровне байтов, поэтому, например, если надо считать или записать одну или несколько строк...
Описание слайда:
Класс FileStream FileStream представляет доступ к файлам на уровне байтов, поэтому, например, если надо считать или записать одну или несколько строк в текстовый файл, то массив байтов надо преобразовать в строки, используя специальные методы. Следовательно, для работы с текстовыми файлами применяются другие классы. Однако, некоторые операции, например, произвольный доступ к файлу, могут выполняться только посредством объекта FileStream.

Слайд 14


Класс FileStream Для формирования байтового потока, привязанного к файлу, создается объект класса FileStream, например, с помощью конструктора:...
Описание слайда:
Класс FileStream Для формирования байтового потока, привязанного к файлу, создается объект класса FileStream, например, с помощью конструктора: FileStream(string путь, FileMode режим); где путь обозначает имя открываемого файла, включая полный путь к нему; а режим — порядок открытия файла. Если попытка открыть файл оказывается неудачной, то генерируется исключение IOException.

Слайд 15


Класс FileStream
Описание слайда:
Класс FileStream

Слайд 16


Класс FileStream
Описание слайда:
Класс FileStream

Слайд 17


Класс FileStream Если требуется ограничить доступ к файлу только для чтения или же только для записи, то в таком случае следует использовать такой...
Описание слайда:
Класс FileStream Если требуется ограничить доступ к файлу только для чтения или же только для записи, то в таком случае следует использовать такой конструктор: FileStream(string путь, FileMode режим, FileAccess доступ); где доступ обозначает конкретный способ доступа к файлу: Read Открывает файл только для чтения Write Открывает файл только для записи ReadWrite Открывает файл только для чтения или записи

Слайд 18


Класс FileStream Например, в следующем примере кода файл test.dat открывается только для чтения: FileStream fin = new...
Описание слайда:
Класс FileStream Например, в следующем примере кода файл test.dat открывается только для чтения: FileStream fin = new FileStream("test.dat", FileMode.Open, FileAccess.Read); По завершении работы с файлом его следует закрыть, вызвав метод Close().

Слайд 19


Класс FileStream Классы File и FileInfо предоставляют методы OpenRead() и OpenWrite(), облегчающие создание объектов FileStream, например: FileStream...
Описание слайда:
Класс FileStream Классы File и FileInfо предоставляют методы OpenRead() и OpenWrite(), облегчающие создание объектов FileStream, например: FileStream aFile = File.OpenRead("Data.txt"); Следующий код выполняет ту же функцию: FileInfo aFileInfo = new FileInfo("Data.txt"); FileStream aFile = aFileInfo.OpenRead();

Слайд 20


Класс FileStream В классе FileStream определены два метода для чтения байтов из файла: ReadByte() и Read(). int ReadByte(); int Read(byte[ ] array,...
Описание слайда:
Класс FileStream В классе FileStream определены два метода для чтения байтов из файла: ReadByte() и Read(). int ReadByte(); int Read(byte[ ] array, int offset, int count); Метод Read() считывает количество count байтов в массив array, начиная с элемента array[offset - смещение в байтах в массиве array]. Метод возвращает количество байтов, успешно считанных из файла.

Слайд 21


Пример 1 using System; using System.IO; // 1 class ShowFile { static void Main(string[] args) { int i; FileStream fin = null; // 2 try { fin = new...
Описание слайда:
Пример 1 using System; using System.IO; // 1 class ShowFile { static void Main(string[] args) { int i; FileStream fin = null; // 2 try { fin = new FileStream("filebyte", FileMode.Open); // 3

Слайд 22


Пример 1 do { // читать байты до конца файла i = fin.ReadByte(); // 4 if (i != -1){ Console.Write("код = " +i+ " символ = ");...
Описание слайда:
Пример 1 do { // читать байты до конца файла i = fin.ReadByte(); // 4 if (i != -1){ Console.Write("код = " +i+ " символ = "); Console.WriteLine((char)i); } } while (i != -1); } catch(IOException exc) { Console.WriteLine("Ошибка ввода-вывода:\n" + exc.Message); return; }

Слайд 23


Пример 1 catch(Exception exc){ Console.WriteLine(exc.Message); // обработать ошибку, если это возможно // еще раз сгенерировать необрабатываемые ИС }...
Описание слайда:
Пример 1 catch(Exception exc){ Console.WriteLine(exc.Message); // обработать ошибку, если это возможно // еще раз сгенерировать необрабатываемые ИС } finally { if (fin != null) fin.Close(); // 5 } } }

Слайд 24


Порядок работы с файлом 1. Подключить пространство имен, в котором описываются стандартные классы для работы с файлами (оператор 1). 2. Объявить...
Описание слайда:
Порядок работы с файлом 1. Подключить пространство имен, в котором описываются стандартные классы для работы с файлами (оператор 1). 2. Объявить файловую переменную и связать ее с файлом на диске (операторы 2 и 3). 3. Выполнить операции ввода-вывода (оператор 4). 4. Закрыть файл (оператор 5).

Слайд 25


Класс FileStream Для записи байта в файл служит метод WriteByte(): void WriteByte(byte value); Этот метод выполняет запись в файл байта,...
Описание слайда:
Класс FileStream Для записи байта в файл служит метод WriteByte(): void WriteByte(byte value); Этот метод выполняет запись в файл байта, обозначаемого параметром value. Для записи в файл целого массива байтов может быть вызван метод Write(): void Write(byte[] array, int offset, int count); Метод Write() записывает в файл количество count байтов из массива array, начиная с элемента array [offset - смещение в байтах в массиве array]. Метод возвращает количество байтов, успешно записанных в файл.

Слайд 26


Пример 2 using System; using System.IO; class CopyFile { static void Main(string[] args) { int i; string si, sr; FileStream fin = null; FileStream...
Описание слайда:
Пример 2 using System; using System.IO; class CopyFile { static void Main(string[] args) { int i; string si, sr; FileStream fin = null; FileStream fout = null; Console.Write("Введите имя исходного файла, который следует копировать: "); si = Console.ReadLine(); Console.Write("Введите имя выходного файла: "); sr = Console.ReadLine();

Слайд 27


Пример 2 try { // открыть файлы fin = new FileStream(si , FileMode.Open); fout = new FileStream(sr, FileMode.Create); do { // скопировать файл i =...
Описание слайда:
Пример 2 try { // открыть файлы fin = new FileStream(si , FileMode.Open); fout = new FileStream(sr, FileMode.Create); do { // скопировать файл i = fin.ReadByte(); if (i != -1) fout.WriteByte((byte)i); } while (i != -1); } catch(IOException exc) { Console.WriteLine("Ошибка ввода-вывода:\n"+exc.Message); } finally { if (fin != null) fin.Close(); if (fout != null) fout.Close (); } } }

Слайд 28


Пример 3 Console.WriteLine("Введите строку для записи в файл:"); string text = Console.ReadLine(); // запись в файл using (FileStream...
Описание слайда:
Пример 3 Console.WriteLine("Введите строку для записи в файл:"); string text = Console.ReadLine(); // запись в файл using (FileStream fstream = new FileStream(@"C:\SomeDir\noname\note.txt", FileMode.OpenOrCreate)){ // преобразование строки в байты byte[] array = System.Text.Encoding.Default.GetBytes(text); // запись массива байтов в файл fstream.Write(array, 0, array.Length); Console.WriteLine("Текст записан в файл"); }

Слайд 29


Пример 3 // чтение из файла using (FileStream fstream = File.OpenRead(@"C:\SomeDir\noname\note.txt")){ // преобразование строки в байты...
Описание слайда:
Пример 3 // чтение из файла using (FileStream fstream = File.OpenRead(@"C:\SomeDir\noname\note.txt")){ // преобразование строки в байты byte[] array = new byte[fstream.Length]; // считывание данных fstream.Read(array, 0, array.Length); // декодирование байтов в строку string textFromFile = System.Text.Encoding.Default.GetString(array); Console.WriteLine("Текст из файла: {0}", textFromFile); } Console.ReadLine();

Слайд 30


Файлы с произвольным доступом метод Seek() позволяет установить указатель файла на любое место в файле: long Seek(long offset, SeekOrigin origin);...
Описание слайда:
Файлы с произвольным доступом метод Seek() позволяет установить указатель файла на любое место в файле: long Seek(long offset, SeekOrigin origin); Курсор потока, с которого начинается чтение или запись, смещается вперед на значение offset относительно позиции, указанной в качестве второго параметра origin. Смещение может отрицательным, тогда курсор сдвигается назад, если положительное - то вперед. В качестве origin может быть указано одно из приведенных ниже значений: SeekOrigin.Begin Поиск от начала файла SeekOrigin.Current Поиск от текущего положения SeekOrigin.End Поиск от конца файла

Слайд 31


Пример 4 using System; using System.IO; class RandomAccessDemo { static void Main() { FileStream f = null; char ch; try { f = new...
Описание слайда:
Пример 4 using System; using System.IO; class RandomAccessDemo { static void Main() { FileStream f = null; char ch; try { f = new FileStream("random.dat", FileMode.Create); // записать английский алфавит в файл for (int i=0; i < 26; i++) f.WriteByte((byte)('A'+i)); // считать отдельные буквы английского алфавита f.Seek(0, SeekOrigin.Begin); // найти первый байт ch = (char) f.ReadByte (); Console.WriteLine("Первая буква: " + ch);

Слайд 32


Пример 4 f.Seek(1, SeekOrigin.Begin); // найти второй байт ch = (char) f. ReadByte (); Console.WriteLine("Вторая буква: " + ch); f.Seek(4,...
Описание слайда:
Пример 4 f.Seek(1, SeekOrigin.Begin); // найти второй байт ch = (char) f. ReadByte (); Console.WriteLine("Вторая буква: " + ch); f.Seek(4, SeekOrigin.Begin); // найти пятый байт ch = (char) f.ReadByte(); Console.WriteLine("Пятая буква: " + ch); // прочитать буквы английского алфавита через одну Console.WriteLine("Буквы алфавита через одну: "); for (int i=0; i < 26; i += 2) { f.Seek(i, SeekOrigin.Begin); // найти i-й символ ch = (char) f.ReadByte(); Console.Write(ch + " "); } }

Слайд 33


Пример 4 catch(IOException exc) { Console.WriteLine("Ошибка ввода-вывода\n" + exc.Message); } finally { if (f != null) f.Close();...
Описание слайда:
Пример 4 catch(IOException exc) { Console.WriteLine("Ошибка ввода-вывода\n" + exc.Message); } finally { if (f != null) f.Close(); Console.WriteLine(); } } }

Слайд 34


Пример 4 // прочитать буквы английского алфавита через одну Console.WriteLine("Буквы алфавита через одну: "); for (int i=0; i < 26; i += 2)...
Описание слайда:
Пример 4 // прочитать буквы английского алфавита через одну Console.WriteLine("Буквы алфавита через одну: "); for (int i=0; i < 26; i += 2) { f.Position = i; // найти i-й символ // посредством свойства Position ch = (char) f.ReadByte (); Console.Write(ch + " "); }

Слайд 35


Пример 5 using System.IO; using System.Text; class Program{ static void Main(string[] args){ string text = "hello world"; // запись в файл...
Описание слайда:
Пример 5 using System.IO; using System.Text; class Program{ static void Main(string[] args){ string text = "hello world"; // запись в файл using (FileStream fstream = new FileStream(@"D:\note.dat", FileMode.OpenOrCreate)){ // преобразование строки в байты byte[] input = Encoding.Default.GetBytes(text);

Слайд 36


Пример 5 // запись массива байтов в файл fstream.Write(input, 0, input.Length); Console.WriteLine("Текст записан в файл"); // перемещение...
Описание слайда:
Пример 5 // запись массива байтов в файл fstream.Write(input, 0, input.Length); Console.WriteLine("Текст записан в файл"); // перемещение указателя в конец файла, // до конца файла- пять байт fstream.Seek(-5, SeekOrigin.End); // минус 5 символов с конца потока // считывание четырех символов с текущей позиции byte[] output = new byte[4]; fstream.Read(output, 0, output.Length); // декодирование байтов в строку string textFromFile = Encoding.Default.GetString(output);

Слайд 37


Пример 5 Encoding.Default.GetString(output); Console.WriteLine("Текст из файла: {0}", textFromFile); // worl // замена в файле слова world...
Описание слайда:
Пример 5 Encoding.Default.GetString(output); Console.WriteLine("Текст из файла: {0}", textFromFile); // worl // замена в файле слова world на слово house string replaceText = "house"; fstream.Seek(-5, SeekOrigin.End); // минус 5 символов с конца потока input = Encoding.Default.GetBytes(replaceText); fstream.Write(input, 0, input.Length); // считывание всего файла, // возвращение указателя в начало файла fstream.Seek(0, SeekOrigin.Begin);

Слайд 38


Пример 5 output = new byte[fstream.Length]; fstream.Read(output, 0, output.Length); // декодирование байтов в строку textFromFile =...
Описание слайда:
Пример 5 output = new byte[fstream.Length]; fstream.Read(output, 0, output.Length); // декодирование байтов в строку textFromFile = Encoding.Default.GetString(output); Console.WriteLine("Текст из файла: {0}", textFromFile); // hello house } Console.Read(); } }

Слайд 39


Пример 5
Описание слайда:
Пример 5

Слайд 40


Пример 6 using System; using System.Collections.Generic; using System.Ling; using System.Text; using System.IO; ... static void Main(string[] args) {...
Описание слайда:
Пример 6 using System; using System.Collections.Generic; using System.Ling; using System.Text; using System.IO; ... static void Main(string[] args) { byte[] byData = new byte[200]; char[] charData = new Char [200]; try { FileStream aFile = new FileStream("../../Program.cs", FileMode.Open) aFile.Seek(113, SeekOrigin.Begin); aFile.Read(byData, 0, 200); }

Слайд 41


Пример 6 catch(IOException e) { Console.WriteLine("Сгенерировано исключение ввода-вывода!"); Console.WriteLine(e.ToString ());...
Описание слайда:
Пример 6 catch(IOException e) { Console.WriteLine("Сгенерировано исключение ввода-вывода!"); Console.WriteLine(e.ToString ()); Console.ReadKey(); return; } Decoder d = Encoding.UTF8.GetDecoder(); d.GetChars(byData, 0, byData.Length, charData, 0); Console.WriteLine(charData); Console.ReadKey(); }

Слайд 42


Пример 7 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System. IO; ... static void Main(string[] args)...
Описание слайда:
Пример 7 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System. IO; ... static void Main(string[] args) { byte[] byData; char[] charData; try { FileStream aFile = new FileStream("Temp.txt", FileMode.Create); charData="Скоро Новый год!!!".ToCharArray(); byData = new byte[charData.Length*2]; Encoder e = Encoding.UTF8.GetEncoder();

Слайд 43


Пример 7 e.GetBytes(charData, 0, charData.Length, byData, 0, true); // переместить файловый указатель в начало файла aFile.Seek(0, SeekOrigin.Begin);...
Описание слайда:
Пример 7 e.GetBytes(charData, 0, charData.Length, byData, 0, true); // переместить файловый указатель в начало файла aFile.Seek(0, SeekOrigin.Begin); aFile.Write(byData, 0, byData.Length); } catch (IOException ex) { Console.WriteLine("Сгенерировано исключение ввода-вывода!"); Console.WriteLine (ex.ToString()); Console.ReadKey(); return; } }

Слайд 44


Символьный ввод-вывод в файл Несмотря на то что файлы часто обрабатываются побайтово, для этой цели можно воспользоваться также символьными потоками....
Описание слайда:
Символьный ввод-вывод в файл Несмотря на то что файлы часто обрабатываются побайтово, для этой цели можно воспользоваться также символьными потоками. Преимущество символьных потоков заключается в том, что они оперируют символами непосредственно в уникоде. На вершине иерархии классов символьных потоков находятся абстрактные классы TextReader (организует ввод) и TextWriter (организует вывод).

Слайд 45


Класс TextReader
Описание слайда:
Класс TextReader

Слайд 46


Класс TextReader
Описание слайда:
Класс TextReader

Слайд 47


Класс TextWriter Для записи в текстовый файл используется класс TextWriter. Свою функциональность он реализует через следующие методы: - Close:...
Описание слайда:
Класс TextWriter Для записи в текстовый файл используется класс TextWriter. Свою функциональность он реализует через следующие методы: - Close: закрывает записываемый файл и освобождает все ресурсы. - Flush: записывает в файл оставшиеся в буфере данные и очищает буфер. - Write: записывает в файл данные простейших типов, как int, double, char, string и т.д. - WriteLine: также записывает данные, только после записи добавляет в файл символ окончания строки.

Слайд 48


Символьный ввод-вывод в файл Классы TextReader и TextWriter реализуются несколькими классами символьных потоков: StreamReader Предназначен для ввода...
Описание слайда:
Символьный ввод-вывод в файл Классы TextReader и TextWriter реализуются несколькими классами символьных потоков: StreamReader Предназначен для ввода символов из байтового потока. Этот класс является оболочкой для байтового потока ввода StreamWriter Предназначен для вывода символов в байтовый поток. Этот класс является оболочкой для байтового потока вывода StringReader Предназначен для ввода символов из символьной строки StringWriter Предназначен для вывода символов в символьную строку

Слайд 49


Символьный ввод-вывод в файл Для выполнения операций символьного ввода-вывода в файлы объект класса FileStream заключается в оболочку класса...
Описание слайда:
Символьный ввод-вывод в файл Для выполнения операций символьного ввода-вывода в файлы объект класса FileStream заключается в оболочку класса StreamReader или StreamWriter. В этих классах выполняется автоматическое преобразование байтового потока в символьный и наоборот. Класс StreamWriter является производным от класса TextWriter, а класс StreamReader — производным от класса TextReader. Следовательно, в классах StreamReader и StreamWriter доступны методы и свойства, определенные в их базовых классах.

Слайд 50


Применение класса StreamWriter Существует много способов создания объекта StreamWriter. Если объект FileStream уже имеется, можно использовать...
Описание слайда:
Применение класса StreamWriter Существует много способов создания объекта StreamWriter. Если объект FileStream уже имеется, можно использовать следующее для создания StreamWriter (1 способ): FileStream aFile = new FileStream("Log.txt", FileMode.CreateNew); StreamWriter sw = new StreamWriter(aFile); Объект StreamWriter можно также создать непосредственно из файла (2 способ): StreamWriter sw = new StreamWriter("Log.txt", true);

Слайд 51


Пример 8 (1 способ) using System; using System.IO; class KtoD { static void Main() { string str; FileStream fout; // 1 // открыть сначала поток...
Описание слайда:
Пример 8 (1 способ) using System; using System.IO; class KtoD { static void Main() { string str; FileStream fout; // 1 // открыть сначала поток файлового ввода-вывода try { fout = new FileStream("test.txt", FileMode.Create); // 2 } catch(IOException exc) { Console.WriteLine("Ошибка открытия файла:\n" + exc.Message); return; }

Слайд 52


Пример 8 (1 способ) // заключить поток файлового ввода-вывода в // оболочку класса StreamWriter StreamWriter fstr_out = new StreamWriter(fout); // 3...
Описание слайда:
Пример 8 (1 способ) // заключить поток файлового ввода-вывода в // оболочку класса StreamWriter StreamWriter fstr_out = new StreamWriter(fout); // 3 try { Console.WriteLine("Введите текст, а по окончании - 'стоп'."); do { Console.Write(": "); str = Console.ReadLine(); if (str != "стоп") { str = str + "\r\n"; // добавить новую строку fstr_out.Write(str); } } while(str != "стоп"); }

Слайд 53


Пример 8 (1 способ) catch(IOException exc) { Console.WriteLine("Ошибка ввода-вывода:\n" + exc.Message); } finally { fstr_out.Close(); } } }
Описание слайда:
Пример 8 (1 способ) catch(IOException exc) { Console.WriteLine("Ошибка ввода-вывода:\n" + exc.Message); } finally { fstr_out.Close(); } } }

Слайд 54


Пример 9 (2 способ) using System; using System.IO; class KtoD { static void Main() { string str; StreamWriter fstr_out = null; // 1 try { // открыть...
Описание слайда:
Пример 9 (2 способ) using System; using System.IO; class KtoD { static void Main() { string str; StreamWriter fstr_out = null; // 1 try { // открыть файл, заключенный в оболочку // класса StreamWriter fstr_out = new StreamWriter("test.txt"); // 2 Console.WriteLine("Введите текст, а по окончании - 'стоп'.");

Слайд 55


Пример 9 (2 способ) do { Console.Write(": "); str = Console.ReadLine(); if (str != "стоп") { str = str + "\r\n"; //...
Описание слайда:
Пример 9 (2 способ) do { Console.Write(": "); str = Console.ReadLine(); if (str != "стоп") { str = str + "\r\n"; // добавить новую строку fstr_out.Write(str); } } while(str != "стоп"); } catch(IOException exc) { Console.WriteLine("Ошибка ввода-вывода:\n" + exc.Message); } finally { if (fstr_out != null) fstr_out.Close(); } } }

Слайд 56


Применение класса StreamReader Чтобы создать экземпляр класса StreamReader, можно сначала создать объект FileInfо и затем вызвать его метод...
Описание слайда:
Применение класса StreamReader Чтобы создать экземпляр класса StreamReader, можно сначала создать объект FileInfо и затем вызвать его метод OpenText() (0 способ): FileInfo theSourceFile = new FileInfo (@"C:\test\test1.cs"); StreamReader stream = theSourceFile.OpenText(); Наиболее распространенный способ его создания — применение ранее созданного объекта FileStream (1 способ): FileStream aFile = new FileStream("Log.txt", FileMode.Open); StreamReader sr = new StreamReader(aFile); Подобно StreamWriter, объект класса StreamReader может быть создан непосредственно из строки, содержащей путь к определенному файлу (2 способ): StreamReader sr = new StreamReader("Log.txt");

Слайд 57


Пример 10 using System; using System.IO; class DtoS { static void Main() { StreamReader fstr_in; string s; try { // открыть файл, заключенный в...
Описание слайда:
Пример 10 using System; using System.IO; class DtoS { static void Main() { StreamReader fstr_in; string s; try { // открыть файл, заключенный в оболочку класса StreamReader fstr_in = new StreamReader("test.txt"); } catch (IOException exc) { Console.WriteLine("Ошибка открытия файла:\n" + exc.Message); return; }

Слайд 58


Пример 10 try { while ((s = fstr_in.ReadLine()) != null) { Console.WriteLine(s); } } catch (IOException exc) { Console.WriteLine("Ошибка...
Описание слайда:
Пример 10 try { while ((s = fstr_in.ReadLine()) != null) { Console.WriteLine(s); } } catch (IOException exc) { Console.WriteLine("Ошибка ввода-вывода:\n" + exc.Message); } finally { fstr_in.Close(); } } }

Слайд 59


Способы считывания текста из файла 1. Построчный ввод можно организовать с помощью оператора using. Console.WriteLine("******считывается файл...
Описание слайда:
Способы считывания текста из файла 1. Построчный ввод можно организовать с помощью оператора using. Console.WriteLine("******считывается файл построчно + using********"); string s; using (StreamReader sr = new StreamReader("test.txt", System.Text.Encoding.Default)) { while ((s = fstr_in.ReadLine()) != null) { Console.WriteLine(s); } }

Слайд 60


Способы считывания текста из файла 2. Console.WriteLine("******считывается файл посимвольно********"); StreamReader fstr_in = new...
Описание слайда:
Способы считывания текста из файла 2. Console.WriteLine("******считывается файл посимвольно********"); StreamReader fstr_in = new StreamReader(fin); int nChar; try { nChar = fstr_in.Read(); while(nChar != -1) { Console.Write(Convert.ToChar(nChar)); nChar = fstr_in.Read(); } } catch (IOException exc) { Console.WriteLine("Ошибка ввода-вывода:\n" + exc.Message); } finally { fstr_in.Close(); }

Слайд 61


Способы считывания текста из файла 3. Символы можно считывать блоками. Console.WriteLine("******считывается файл блоками********"); using...
Описание слайда:
Способы считывания текста из файла 3. Символы можно считывать блоками. Console.WriteLine("******считывается файл блоками********"); using (StreamReader fstr_in = new StreamReader("test.txt", System.Text.Encoding.Default)){ char[] array = new char[4]; // считывается 4 символа fstr_in.Read(array, 0, 4); Console.WriteLine(array); }

Слайд 62


Способы считывания текста из файла 4. Очень удобен при работе с небольшими файлами метод ReadToEnd(). Он читает весь файл целиком и возвращает его...
Описание слайда:
Способы считывания текста из файла 4. Очень удобен при работе с небольшими файлами метод ReadToEnd(). Он читает весь файл целиком и возвращает его содержимое в виде строки. Console.WriteLine("******считывается весь файл********"); using (StreamReader fstr_in = new StreamReader(fin)){ Console.WriteLine(fstr_inr.ReadToEnd()); } Хотя это может показаться простым и удобным, следует соблюдать осторожность, читая все данные в строковый объект и помещая их все в память. В зависимости от размера этих данных это может быть крайне нежелательно.

Слайд 63


Способы считывания текста из файла 5. С применением функций преобразования типов StreamReader f = new StreamReader( "d:\\C#\\input.txt" );...
Описание слайда:
Способы считывания текста из файла 5. С применением функций преобразования типов StreamReader f = new StreamReader( "d:\\C#\\input.txt" ); string s = f.ReadLine(); Console.WriteLine( "s = " + s ); char c = (char)f.Read(); f.ReadLine(); Console.WriteLine( "c = " + c ); string buf; buf = f.ReadLine(); int i = Convert.ToInt32( buf ); Console.WriteLine( i );

Слайд 64


Способы считывания текста из файла 5. С применением функций преобразования типов buf = f.ReadLine(); double x = Convert.ToDouble( buf );...
Описание слайда:
Способы считывания текста из файла 5. С применением функций преобразования типов buf = f.ReadLine(); double x = Convert.ToDouble( buf ); Console.WriteLine( x ); buf = f.ReadLine(); double y = double.Parse( buf ); Console.WriteLine( y ); buf = f.ReadLine(); decimal z = decimal.Parse( buf ); Console.WriteLine( z ); f.Close();

Слайд 65


Применение класса MemoryStream Иногда оказывается полезно читать вводимые данные из массива или записывать выводимые данные в массив, а не вводить их...
Описание слайда:
Применение класса MemoryStream Иногда оказывается полезно читать вводимые данные из массива или записывать выводимые данные в массив, а не вводить их непосредственно из устройства или выводить прямо на него. Для этой цели служит класс MemoryStream. Один из конструкторов класса: MemoryStream(byte[ ] buffer); где buffer обозначает массив байтов, используемый в качестве источника или адресата в запросах ввода-вывода. Массив buffer должен быть достаточно большим для хранения направляемых в него данных.

Слайд 66


Пример 11 using System; using System.IO; class MemStrDemo { static void Main() { byte[] storage = new byte[255]; // создать запоминающий поток...
Описание слайда:
Пример 11 using System; using System.IO; class MemStrDemo { static void Main() { byte[] storage = new byte[255]; // создать запоминающий поток MemoryStream memstrm = new MemoryStream(storage); // заключить объект memstrm в оболочки классов // чтения и записи данных в потоки StreamWriter memwtr = new StreamWriter(memstrm); StreamReader memrdr = new StreamReader(memstrm);

Слайд 67


Пример 11 try { // записать данные в память, используя объект memwtr for (int i=0; i < 10; i++) memwtr.WriteLine("byte [" + i...
Описание слайда:
Пример 11 try { // записать данные в память, используя объект memwtr for (int i=0; i < 10; i++) memwtr.WriteLine("byte [" + i +"]:"+ i); // поставить в конце точку memwtr.WriteLine("."); memwtr.Flush(); Console.WriteLine("Чтение прямо из массива storage: "); // отобразить содержимое массива storage непосредственно foreach (char ch in storage) { if (ch == '.') break; Console.Write (ch); } Console.WriteLine("\nЧтение из потока с помощью объекта memrdr: ");

Слайд 68


Пример 11 memstrm.Seek(0, SeekOrigin.Begin); string str = memrdr.ReadLine(); while(str != null) { str = memrdr.ReadLine(); if (str [0] == '.') break;...
Описание слайда:
Пример 11 memstrm.Seek(0, SeekOrigin.Begin); string str = memrdr.ReadLine(); while(str != null) { str = memrdr.ReadLine(); if (str [0] == '.') break; Console. WriteLine (str); } } catch(IOException exc) { Console.WriteLine("Ошибка ввода-вывода\n" + exc.Message); } finally { // освободить ресурсы считывающего и записывающего потоков memwtr.Close(); memrdr.Close(); } } }

Слайд 69


Применение классов StringReader и StringWriter Для выполнения операций ввода-вывода с запоминанием в некоторых приложениях в качестве базовой памяти...
Описание слайда:
Применение классов StringReader и StringWriter Для выполнения операций ввода-вывода с запоминанием в некоторых приложениях в качестве базовой памяти иногда лучше использовать массив типа string, чем массив типа byte. Именно для таких случаев и предусмотрены классы StringReader и StringWriter. В частности, класс StringReader наследует от класса TextReader, а класс StringWriter — от класса TextWriter.

Слайд 70


Пример 12 using System; using System.IO; class StrRdrWtrDemo { static void Main() { StringWriter strwtr = null; StringReader strrdr = null; try { //...
Описание слайда:
Пример 12 using System; using System.IO; class StrRdrWtrDemo { static void Main() { StringWriter strwtr = null; StringReader strrdr = null; try { // создать объект класса StringWriter strwtr = new StringWriter(); // вывести данные в записывающий поток типа StringWriter for (int i=0; i < 10; i++) strwtr.WriteLine("Значение i равно: " + i); // создать объект класса StringReader strrdr = new StringReader(strwtr.ToString());

Слайд 71


Пример 12 // ввести данные из считывающего потока типа StringReader string str = strrdr.ReadLine(); while (str != null) { str = strrdr.ReadLine();...
Описание слайда:
Пример 12 // ввести данные из считывающего потока типа StringReader string str = strrdr.ReadLine(); while (str != null) { str = strrdr.ReadLine(); Console.WriteLine(str); } } catch (IOException exc) { Console.WriteLine("Ошибка ввода-вывода\n" + exc.Message); } finally { // освободить ресурсы считывающего и записывающего потоков if (strrdr != null) strrdr.Close(); if (strwtr != null) strwtr.Close(); } } }

Слайд 72


Переадресация стандартных потоков Для всех программ, в которых используется пространство имен System, доступны встроенные потоки, открывающиеся с...
Описание слайда:
Переадресация стандартных потоков Для всех программ, в которых используется пространство имен System, доступны встроенные потоки, открывающиеся с помощью свойств Console.In - связано с потоком ввода, Console.Out - связано с потоком вывода и Console.Error - связано со стандартным потоком сообщений об ошибках, которые по умолчанию также выводятся на консоль. Но эти потоки могут быть переадресованы на любое другое совместимое устройство ввода-вывода. И чаще всего они переадресовываются в файл. Переадресацию стандартных потоков можно осуществлять под управлением самой программы с помощью методов SetIn(), SetOut() и SetError(), являющихся членами класса Console.

Слайд 73


Пример 13 using System; using System.IO; class Redirect { static void Main() { StreamWriter log_out = null; try { log_out = new...
Описание слайда:
Пример 13 using System; using System.IO; class Redirect { static void Main() { StreamWriter log_out = null; try { log_out = new StreamWriter("logfile.txt"); // переадресовать стандартный вывод в файл logfile.txt Console.SetOut(log_out); Console.WriteLine("Это начало файла журнала регистрации."); for (int i=0; i

Слайд 74


Пример 13 Console.WriteLine("Это конец файла журнала регистрации."); } catch(IOException exc) { Console.WriteLine("Ошибка...
Описание слайда:
Пример 13 Console.WriteLine("Это конец файла журнала регистрации."); } catch(IOException exc) { Console.WriteLine("Ошибка ввода-вывода\n" + exc.Message); } finally { if (log_out != null) log_out.Close(); } } }

Слайд 75


Чтение и запись двоичных данных В С# имеется также возможность читать и записывать другие типы данных. Например, можно создать файл, содержащий...
Описание слайда:
Чтение и запись двоичных данных В С# имеется также возможность читать и записывать другие типы данных. Например, можно создать файл, содержащий данные типа int, double или short. Для чтения и записи двоичных значений встроенных типов данных служат классы потоков BinaryReader и BinaryWriter. Используя эти потоки, следует иметь в виду, что данные считываются и записываются во внутреннем двоичном формате, а не в удобочитаемой текстовой форме.

Слайд 76


Класс BinaryWriter Класс BinaryWriter служит оболочкой, в которую заключается байтовый поток, управляющий выводом двоичных данных. Наиболее часто...
Описание слайда:
Класс BinaryWriter Класс BinaryWriter служит оболочкой, в которую заключается байтовый поток, управляющий выводом двоичных данных. Наиболее часто употребляемый конструктор этого класса: BinaryWriter(Stream output); где output обозначает поток, в который выводятся записываемые данные. Для записи в выходной файл в качестве параметра output может быть указан объект, создаваемый средствами класса FileStream. Наиболее часто используемые методы, определенные в классе BinaryWriter: Write(value), Seek(), Close() и Flush().

Слайд 77


Класс BinaryReader Класс BinaryReader служит оболочкой, в которую заключается байтовый поток, управляющий вводом двоичных данных. Наиболее часто...
Описание слайда:
Класс BinaryReader Класс BinaryReader служит оболочкой, в которую заключается байтовый поток, управляющий вводом двоичных данных. Наиболее часто употребляемый конструктор этого класса: BinaryReader(Stream input); где input обозначает поток, из которого вводятся считываемые данные. Для чтения из входного файла в качестве параметра input может быть указан объект, создаваемый средствами класса FileStream.

Слайд 78


Класс BinaryReader Наиболее часто используемые методы, определенные в классе BinaryReader: bool ReadBoolean(), byte ReadByte(), sbyte ReadSByte(),...
Описание слайда:
Класс BinaryReader Наиболее часто используемые методы, определенные в классе BinaryReader: bool ReadBoolean(), byte ReadByte(), sbyte ReadSByte(), byte [ ] ReadBytes(int count), char ReadChar(), char [ ] ReadChars(int count), decimal ReadDecimal(), double ReadDouble(), float ReadSingle(), short ReadIntl6(), int ReadInt32(), long ReadInt64(), ushort ReadUIntl6(), uint ReadUInt32(), ulong ReadUInt64(), string ReadString() int Read() int Read(byte [] buffer, int offset, int count) int Read(char[]buffer, int offset, int count)

Слайд 79


Пример 14 using System; using System.IO; class RWData { static void Main() { BinaryWriter dataOut; BinaryReader dataIn; int i = 10; double d =...
Описание слайда:
Пример 14 using System; using System.IO; class RWData { static void Main() { BinaryWriter dataOut; BinaryReader dataIn; int i = 10; double d = 1023.56; bool b = true; string str = "Это тест";

Слайд 80


Пример 14 // открыть файл для вывода try { dataOut = new BinaryWriter(new FileStream("testdata", FileMode.Create)); } catch(IOException...
Описание слайда:
Пример 14 // открыть файл для вывода try { dataOut = new BinaryWriter(new FileStream("testdata", FileMode.Create)); } catch(IOException exc) { Console.WriteLine("Ошибка открытия файла:\n" + exc.Message); return; }

Слайд 81


Пример 14 try { // записать данные в файл Console.WriteLine("Запись " + i) ; dataOut.Write(i) ; Console.WriteLine("Запись " + d);...
Описание слайда:
Пример 14 try { // записать данные в файл Console.WriteLine("Запись " + i) ; dataOut.Write(i) ; Console.WriteLine("Запись " + d); dataOut.Write(d); Console.WriteLine("Запись " + b); dataOut.Write(b); Console.WriteLine("Запись " + 12.2 * 7.4); dataOut.Write(12.2 * 7.4); Console.WriteLine("Запись " + str); dataOut.Write(str); }

Слайд 82


Пример 14 catch(IOException exc) { Console.WriteLine("Ошибка ввода-вывода:\n" + exc.Message); } finally { dataOut.Close();...
Описание слайда:
Пример 14 catch(IOException exc) { Console.WriteLine("Ошибка ввода-вывода:\n" + exc.Message); } finally { dataOut.Close(); Console.WriteLine(); }

Слайд 83


Пример 14 // прочитать данные из файла try { dataIn = new BinaryReader(new FileStream("testdata", FileMode.Open)); } catch(IOException exc)...
Описание слайда:
Пример 14 // прочитать данные из файла try { dataIn = new BinaryReader(new FileStream("testdata", FileMode.Open)); } catch(IOException exc) { Console.WriteLine("Ошибка открытия файла:\n" + exc.Message) , return; }

Слайд 84


Пример 14 try { i = dataIn.ReadInt32(); Console.WriteLine("Чтение " + i); d = dataIn.ReadDouble(); Console.WriteLine("Чтение " +...
Описание слайда:
Пример 14 try { i = dataIn.ReadInt32(); Console.WriteLine("Чтение " + i); d = dataIn.ReadDouble(); Console.WriteLine("Чтение " + d); b = dataIn.ReadBoolean(); Console.WriteLine("Чтение " + b); d = dataIn.ReadDouble(); Console.WriteLine("Чтение " + d); str = dataIn.ReadString(); Console.WriteLine("Чтение " + str); }

Слайд 85


Пример 14 catch(IOException exc) { Console.WriteLine("Ошибка ввода-вывода:\n" + exc.Message); } finally { dataln.Close(); } } }
Описание слайда:
Пример 14 catch(IOException exc) { Console.WriteLine("Ошибка ввода-вывода:\n" + exc.Message); } finally { dataln.Close(); } } }

Слайд 86


Пример 15 using System; using System.IO; class Inventory { static void Main() { BinaryWriter dataOut; BinaryReader dataIn; string item =...
Описание слайда:
Пример 15 using System; using System.IO; class Inventory { static void Main() { BinaryWriter dataOut; BinaryReader dataIn; string item = "", st = ""; // наименование предмета int onhand, k = 0, ch; // имеющееся в наличии кол-во double cost; // цена

Слайд 87


Пример 15 for ( ; ; ) { do { Console.Clear(); // очистка экрана Console.WriteLine( "1. Ввод данных о товаре"); Console.WriteLine( "2....
Описание слайда:
Пример 15 for ( ; ; ) { do { Console.Clear(); // очистка экрана Console.WriteLine( "1. Ввод данных о товаре"); Console.WriteLine( "2. Поиск товара"); Console.WriteLine( "3. Выход"); Console.WriteLine( "Выберите пункт меню"); ch = Convert.ToInt32(Console.ReadLine()); while(ch != 1 && ch != 2 && ch != 3);

Слайд 88


Пример 15 switch(ch) { case 1: try { dataOut = new BinaryWriter(new FileStream("inventory.dat", FileMode.Create)); } catch(IOException exc)...
Описание слайда:
Пример 15 switch(ch) { case 1: try { dataOut = new BinaryWriter(new FileStream("inventory.dat", FileMode.Create)); } catch(IOException exc) { Console.WriteLine("He удается открыть файл " + "товарных запасов для вывода"); Console.WriteLine("Причина: " + exc.Message); return; }

Слайд 89


Пример 15 // записать данные о товарных запасах в файл try { Console.WriteLine("Введите данные о товарах, для выхода нажмите Enter "); for...
Описание слайда:
Пример 15 // записать данные о товарных запасах в файл try { Console.WriteLine("Введите данные о товарах, для выхода нажмите Enter "); for ( ; ; ) { Console.Write("наименование предмета - "); item = Console.ReadLine(); if (item == "") break; Console.Write("имеющееся в наличии количество - "); st = Console.ReadLine(); if (st == "") break;

Слайд 90


Пример 15 onhand = Convert.ToInt32(st); Console.Write("цена - "); st = Console.ReadLine(); if (st == "") break; cost =...
Описание слайда:
Пример 15 onhand = Convert.ToInt32(st); Console.Write("цена - "); st = Console.ReadLine(); if (st == "") break; cost = Convert.ToDouble (st); dataOut.Write(item); dataOut.Write(onhand ); dataOut.Write(cost); k++; } }

Слайд 91


Пример 15 catch(IOException exc) { Console.WriteLine("Ошибка записи в файл товарных запасов"); Console.WriteLine("Причина: " +...
Описание слайда:
Пример 15 catch(IOException exc) { Console.WriteLine("Ошибка записи в файл товарных запасов"); Console.WriteLine("Причина: " + exc.Message); } finally { dataOut.Close(); } break;

Слайд 92


Пример 15 case 2: if (k == 0) { Console.WriteLine("Вы не ввели данные !!!"); } else { Console.WriteLine(); // открыть файл товарных запасов...
Описание слайда:
Пример 15 case 2: if (k == 0) { Console.WriteLine("Вы не ввели данные !!!"); } else { Console.WriteLine(); // открыть файл товарных запасов для чтения try { dataIn = new BinaryReader(new FileStream("inventory.dat", FileMode.Open)); }

Слайд 93


Пример 15 catch(IOException exc) { Console.WriteLine("He удается открыть файл " + "товарных запасов для ввода");...
Описание слайда:
Пример 15 catch(IOException exc) { Console.WriteLine("He удается открыть файл " + "товарных запасов для ввода"); Console.WriteLine("Причина: " + exc.Message); return; } // найти предмет, введенный пользователем Console.Write("Введите наименование для поиска: "); string what = Console.ReadLine(); Console.WriteLine();

Слайд 94


Пример 15 try { // пока не достигнут конец файла // считывать каждое значение из файла while (dataIn.PeekChar() > -1){ // читать данные о предмете...
Описание слайда:
Пример 15 try { // пока не достигнут конец файла // считывать каждое значение из файла while (dataIn.PeekChar() > -1){ // читать данные о предмете хранения item = dataIn.ReadString(); onhand = dataIn.ReadInt32(); cost = dataIn.ReadDouble(); // проверить, совпадает ли он с запрашиваемым предметом, // если совпадает, то отобразить сведения о нем if (item.Equals(what, StringComparison.OrdinalIgnoreCase)) {

Слайд 95


Пример 15 Console.WriteLine(item+": "+onhand+" штук в наличии. "+"Цена: {0:С} за штуку", cost);...
Описание слайда:
Пример 15 Console.WriteLine(item+": "+onhand+" штук в наличии. "+"Цена: {0:С} за штуку", cost); Console.WriteLine("Общая стоимость по наименованию : {1}", item, cost * onhand); break; } } } catch(EndOfStreamException) { Console.WriteLine("Предмет не найден."); }

Слайд 96


Пример 15 catch(IOException exc) { Console.WriteLine("Ошибка чтения из файла товарных запасов"); Console.WriteLine("Причина: " +...
Описание слайда:
Пример 15 catch(IOException exc) { Console.WriteLine("Ошибка чтения из файла товарных запасов"); Console.WriteLine("Причина: " + exc.Message); } finally { dataIn.Close(); } } // else Console.ReadKey(); // остановка экрана break;

Слайд 97


Пример 15 case 3: Environment.Exit(0); break; } // end switch(ch) } // end for ( ; ; ) } }
Описание слайда:
Пример 15 case 3: Environment.Exit(0); break; } // end switch(ch) } // end for ( ; ; ) } }

Слайд 98


Буферизованный поток Чтобы выполнить чтение и запись двоичного файла, можно создать два объекта класса Stream, один для чтения, а другой для записи....
Описание слайда:
Буферизованный поток Чтобы выполнить чтение и запись двоичного файла, можно создать два объекта класса Stream, один для чтения, а другой для записи. Stream inputStream = File.0penRead(@"'C:\test\source\test1.cs"); Stream outputStream = File.0penWrite(@'"C:\test\source\test1.bak"); Чтение двоичного файла всегда выполняется через буфер. Буфер - это просто байтовый массив, содержащий данные, прочитанные методом Read().

Слайд 99


Буферизованный поток Метод Read() читает байты из внешней памяти, сохраняет их в буфере и возвращает количество считанных байт. Он продолжает читать,...
Описание слайда:
Буферизованный поток Метод Read() читает байты из внешней памяти, сохраняет их в буфере и возвращает количество считанных байт. Он продолжает читать, пока не прочитает все данные: const int SizeBuff = 1024; byte[] buffer = new Byte[SizeBuff]; int bytesRead; while ( (bytesRead = inputStream.Read(buffer, 0, SIZE_BUFF)) > 0 ) { outputStream.Write(buffer, 0, bytesRead); }

Слайд 100


Буферизованный поток Буферизованный поток - это объект, позволяющий операционной системе создавать собственный внутренний буфер для обмена данными с...
Описание слайда:
Буферизованный поток Буферизованный поток - это объект, позволяющий операционной системе создавать собственный внутренний буфер для обмена данными с внешней памятью и самостоятельно определять число байтов, считываемых или записываемых за один раз. Программа по-прежнему будет заполнять буфер указанными порциями, но данные в этот буфер будут поступать из внутреннего системного буфера, а не из внешней памяти. В результате ввод/вывод будет происходить эффективнее и, следовательно, быстрее.

Слайд 101


Буферизованный поток Объект BufferedStream надстраивается над существующим объектом Stream, и, чтобы им воспользоваться, программист должен сначала...
Описание слайда:
Буферизованный поток Объект BufferedStream надстраивается над существующим объектом Stream, и, чтобы им воспользоваться, программист должен сначала создать обычный класс потока, как и раньше: Stream inputStream = File.0penRead(@"C:\test\source\folder3.cs"); Stream outputStream = File.0penWrite(@"C:\test\source\folder3.bak"); После этого надо передать объект класса Stream конструктору буферизованного потока: BufferedStream bufferedInput = new BufferedStream(inputStream); BufferedStream bufferedOutput = new BufferedStream(outputStream);

Слайд 102


Буферизованный поток Затем с объектом класса BufferedStream можно обращаться как с обычным потоком, вызывая методы Read() и Write(), операционная...
Описание слайда:
Буферизованный поток Затем с объектом класса BufferedStream можно обращаться как с обычным потоком, вызывая методы Read() и Write(), операционная система сама будет выполнять буферизацию: while ( (bytesRead = bufferedInput.Read(buffer, 0, SIZE.BUFF)) > 0 ) { bufferedOutput.Write(buffer, 0, bytesRead); } Единственной особенностью применения буферизованных потоков является необходимость принудительно освобождать буфер, чтобы гарантировать, что все данные выведены в файл: bufferedOutput.Flush();

Слайд 103


Пример 16 namespace Programming_CSharp { using System; using System.IO; class Tester { const int SizeBuff = 1024; public static void Main() { //...
Описание слайда:
Пример 16 namespace Programming_CSharp { using System; using System.IO; class Tester { const int SizeBuff = 1024; public static void Main() { // создать объект класса и выполнить его Tester t = new Tester(); t.Run(); }

Слайд 104


Пример 16 // запустить с именем каталога private void Run() { // создать двоичные потоки Stream inputStream =...
Описание слайда:
Пример 16 // запустить с именем каталога private void Run() { // создать двоичные потоки Stream inputStream = File.0penRead(@"C:\test\source\folder3.cs'"); Stream outputStream = File.0penWrite(@"C:\test\source\folder3.bak"); // надстроить буферизованные потоки над двоичными BufferedStream bufferedInput = new BufferedStream(inputStream); BufferedStream bufferedOutput = new BufferedStream(outputStream);

Слайд 105


Пример 16 byte[] buffer = new Byte[SizeBuff]; int bytesRead; while ( (bytesRead = bufferedInput.Read(buffer,0,SizeBuff)) > 0 ) {...
Описание слайда:
Пример 16 byte[] buffer = new Byte[SizeBuff]; int bytesRead; while ( (bytesRead = bufferedInput.Read(buffer,0,SizeBuff)) > 0 ) { bufferedOutput.Write(buffer,0,bytesRead); } bufferedOutput.Flush(); bufferedInput.Close(); bufferedOutput.Close(); } } }

Слайд 106


Контрольные вопросы 1. Какие пространства имен нужны приложению для работы с файлами? 2. Когда для записи файла следует использовать объект...
Описание слайда:
Контрольные вопросы 1. Какие пространства имен нужны приложению для работы с файлами? 2. Когда для записи файла следует использовать объект FileStream вместо объекта StreamWriter? 3. Какие методы класса StreamWriter позволяют читать данные из файлов, и что делает каждый их них? 4. Какой класс желательно использовать для сжатия потока с применением алгоритма Deflate?



Похожие презентации
Mypresentation.ru
Загрузить презентацию