Периферийные устройства
<<  Ввод-вывод в C# Криминалистическое исследование  >>
Ввод-вывод в C#
Ввод-вывод в C#
Поток (stream) -
Поток (stream) -
Синхронный ввод/вывод
Синхронный ввод/вывод
Асинхронный ввод/вывод
Асинхронный ввод/вывод
System
System
Члены класса Stream
Члены класса Stream
Работа с объектом FileStream
Работа с объектом FileStream
Работа с объектом MemoryStream
Работа с объектом MemoryStream
Класс CryptoStream
Класс CryptoStream
System
System
Наиболее важные члены базового класса TextWriter
Наиболее важные члены базового класса TextWriter
Наиболее важные члены класса TextReader
Наиболее важные члены класса TextReader
Пример
Пример
Работа с двоичными данными (классы BinaryReader и BinaryWriter)
Работа с двоичными данными (классы BinaryReader и BinaryWriter)
Наиболее важные члены класса BinaryWriter
Наиболее важные члены класса BinaryWriter
Наиболее важные члены класса BinaryReader
Наиболее важные члены класса BinaryReader
Пример
Пример
Пример
Пример
Задание
Задание

Презентация на тему: «Ввод-вывод в C#». Автор: pov. Файл: «Ввод-вывод в C#.ppt». Размер zip-архива: 57 КБ.

Ввод-вывод в C#

содержание презентации «Ввод-вывод в C#.ppt»
СлайдТекст
1 Ввод-вывод в C#

Ввод-вывод в C#

Ввод-вывод данных

2 Поток (stream) -

Поток (stream) -

это абстрактное представление последовательноro уcrpойства, для котoporo сохранение и считывание данных выполняется побайтно. Базовым устройством для потока может быть, например файл, принтер или сетевой сокет. Через эту абстракцию можно из одноrо и тoro же процесса обращаться к разным устройствам, и аналоrичный проrpаммный код может использоваться для чтения данных из фaйловоrо и ceтeвoro входных потоков. Тем самым проrраммисту не требуется беспокоиться о реальном физическом механизме тaкoro устройства.

3 Синхронный ввод/вывод

Синхронный ввод/вывод

По умолчанию все операции с потоками выполняются синхронно, и это простейший способ для операций ввода/вывода. Недостаток синхронноrо ввода/вывода состоит в том, что обработка блокируется до завершения операции ввода/вывода и лишь затем приложению разрешается продолжить обработку. Синхронный ввод/вывод бывает полезен при небольших размерах файлов, но для больших файлов из-за блокирования выполнения текущеrо потока производительность приложения может оказаться слишком низкой. Синхронный ввод/вывод не подходит для выплнения операций в сети, rде слабо влияние на вpeмя, необходимое для завершения операции. Следовательно, синхронный ввод/вывод был бы неудачным выбором для передачи больших потоков через сеть с низкой пропускной способностью или скоростью. Вводя мноrопоточную обработку (threading) в синхронные методы, можно имитировать асинхронный ввод/вывод.

4 Асинхронный ввод/вывод

Асинхронный ввод/вывод

При асинхронном вводе/выводе до завершения операции ввода/вывода моryr выполняться друrие задачи. Коrда операция ввода/вывода завершается, операционная система уведомляет об этом вызывающую nporpaммy. Следовательно, для асинхронноrо ввода/вывода требуется отдельный механизм уведомления. Этот метод полезен, коrда одновременно с передачей больших объемов данных из потока приложению требуется продолжать выполнение друrих задач или работать с медленными устройствами, чья скорость моrла бы в противном случае замедлить работу приложения. I При асинхронном вводе/выводе для каждоrо запроса ввода/вывода создается отдельный поток выполнения, и это может привести к повышению накладных расходов для операционной системы.

5 System

System

IO

Все классы, производные от Stream, предназначены для работы с блоками двоичных данных.

6 Члены класса Stream

Члены класса Stream

CanRead CanSeek CanWrite Close() Flush() Length Position Read() ReadByte() Seek() SetLength() Write() WriteByte()

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

7 Работа с объектом FileStream

Работа с объектом FileStream

// Создаем файл в текущем каталоге FileStream myFStream = new FileStream("test.dat", FileMode.OpenOrCreate, FileAccess.ReadWrite); // Записываем байты в файл *.dat for(int i = 0; i < 256; i++) { myFStream.WriteByte((byte)i); } // Переставляем внутренний указатель на начало myFStream.Position = 0; // Считываем байты из файла *.dat for(int i = 0; i < 256; i++) { Console.Write(myFStream.ReadByte()); } myFStream.Close();

8 Работа с объектом MemoryStream

Работа с объектом MemoryStream

using System; using System.Text; using System.IO; namespace ConsoleApplication1 { class memStreamDemoClass { static void Main(string[] args) { // Создаем пустой поток в памяти MemoryStream ms = new MemoryStream(); byte[] memData = Encoding.ASCII.GetBytes( "This will go in Memory!"); // Записываем данные ms.Write(memData, 0, memData.Length); // Устанавливаем указатель на начало ms.Position=0; byte[] inData = new byte[100]; // Читаем. из памяти ms.Read(inData, 0, 100); Console.WriteLine(Encoding.ASCII.GetString(inData)); Stream strm =new FileStream("Memoutput.txt", FileMode.OpenOrCreate, FileAccess.Write); ms.WriteTo(strm); } } }

9 Класс CryptoStream

Класс CryptoStream

Для определенных типов данных их защита при передаче и хранении является очень важным требованием. Для защиты данных, как правило, применяется их шифрование секретным ключом. В зависимости от алrоритма для дешифрования может использоваться тот же секретный ключ, что и для шифрования, или друrой ключ в зависимости от алrоритма шифрования. Платформа .NET предоставляет класс CryptoStream, связывающий потоки с криптоrpафическими преобразованиями. Хотя CryptoSt ream не принадлежит на самом деле пространству имен System.I0, он все же порожден от класса St ream. Класс CryptoStream может использоваться для выполнения криптоrpафических операций на объекте Stream. Конструктор CryptoStream принимает три параметра: первый задает используемый поток, второй криптоrрафическое преобразование, а в третьем указывается доступ на чтение или запись к криптоrpафическому потоку. В нашем распоряжении имеются самые разные криптоrрафические преобразования - можно использовать любой провайдер службы криптоrpафии, реализующий интерфейс ICryptoTransform.

10 System

System

IO

Классы StreamReader и StreamWriter пригодятся нам в тех ситуациях, когда необходимо считать или записать символьные данные (данные в формате string). По умолчанию оба этих типа работают с кодировкой Unicode.

11 Наиболее важные члены базового класса TextWriter

Наиболее важные члены базового класса TextWriter

Close() Закрывает соответствующий объект Writer и освобождает связанные с ним ресурсы. Если в процессе записи используется буфер, он будет автоматически очищен Flush() Очищает все буферы для текущего объекта Writer и записывает накопленные в них данные в место постоянного их хранения, но при этом сам объект Writer не закрывается NewLine Используется для определения последователь- ности символов, означающих начало новой строки. По умолчанию используется последовательность “возврат каретки” — “перевод строки” (\r\n) Write() Записывает новый отрезок текста в поток без применения последовательности начала новой строки WriteLine() Записывает новую строку в поток (с применением последовательности начала новой строки)

12 Наиболее важные члены класса TextReader

Наиболее важные члены класса TextReader

Peek() Возвращает следующий символ, не изменяя позицию указателя в файле Read() Считывает данные из потока на входе ReadBlock() Считывает указанное пользователем количество символов, начиная с определенной позиции, и записывает считанные данные в буфер ReadLine() Считывает строку данных из текущего потока и возвращает ее как значение типа string. Пустая строка (null string) означает конец файла (EOF) ReadToEnd() Считывает все символы, начиная с текущей позиции и до конца потока, и возвращает считанные данные как единое значение типа string

13 Пример

Пример

public class MyStreamWriterReader { public static int Main(string[] args) { . . . // А теперь выводим информацию из файла на консоль при помощи // StreamReader Console.WriteLine("Here ane your thoughts:\n"); StreamReader sr = File.OpenText(“Thoughts.txt"); string input = null; while ((input = sr.ReadLine()) !=null) { Console.WriteLine(input); } sr.Close(); return 0: } }

14 Работа с двоичными данными (классы BinaryReader и BinaryWriter)

Работа с двоичными данными (классы BinaryReader и BinaryWriter)

Эти типы позволяют считывать и записывать определенные двоичные типы данных в поток. Класс BinaryWriter определяет многократно перегруженный метод Write() для помещения в поток объектов самых разных типов данных.

15 Наиболее важные члены класса BinaryWriter

Наиболее важные члены класса BinaryWriter

BaseStream Представляет поток, с которым работает объект BinaryWriter Close() Закрывает поток Flush() Очищает буфер Seek() Устанавливает позицию в текущем потоке Write() Записывает значение в текущий поток

16 Наиболее важные члены класса BinaryReader

Наиболее важные члены класса BinaryReader

BaseStream Представляет поток, с которым работает объект BinaryReader Close() Закрывает объект BinaryReader PeekChar() Возвращает следующий символ без перемещения внутреннего указателя в потоке Read() Считывает поток байтов или символов и сохраняет в массиве (передаваемом как входящий параметр) ReadXXXX() Считывает данные определенного типа из потока (например, ReadBoolean(), ReadByte(), Readlnt32() и т. д.)

17 Пример

Пример

public class ByteTweaker { public static void Main(string[] args) { Console.WriteLine("Creating a file and writing binary data..."); FileStream myFStream = new FileStream("temp.dat", FileMode.OpenOrCreate, FileAccess.ReadWrite); // Записываем двоичные данные BinaryWriter binWrit = new BinaryWriter(myFStream); binWrit.Write("Hello as binary info..."); int myInt = 99; float myFloat = 9984.82343F; bool myBool = false; char[] myCharArray = {'H', 'e', 'l', 'l', 'o'}; binWrit.Write(myInt); binWrit.Write(myFloat); binWrit.Write(myBool); binWrit.Write(myCharArray);

18 Пример

Пример

// Устанавливаем внутренний указатель на начало binWrit.BaseStream.Position = 0; // Считываем двоичную информацию как поток байтов Console.WriteLine("Reading binary data..."); BinaryReader binRead = new BinaryReader(myFStream); int temp = 0; while(binRead.PeekChar()!=-1) { Console.Write(binRead.ReadByte()); temp = temp + 1; if(temp == 5) { // Добавляем пустую строку через каждые 5 байтов temp = 0; Console.WriteLine(); } } // Все закрываем binWrit.Close(); binRead.Close(); myFStream.Close(); } }

19 Задание

Задание

Пусть текстовый файл содержит пары «логин-пароль». Напишите программу, которая по заданному логину находит и печатает пароль или сообщение о том, что логин не найден.

«Ввод-вывод в C#»
http://900igr.net/prezentacija/informatika/vvod-vyvod-v-c-104032.html
cсылка на страницу

Периферийные устройства

27 презентаций о периферийных устройствах
Урок

Информатика

130 тем
Слайды