средства "ввода-вывода" + обработка исключений
Primary tabs
Forums:
В си шарпе ввод-вывод основан на абстракции "поток данных". физически поток данных привязан к дискриптору файла или чему-то вроде того. ПОток - это абстракция для описания последовательных источников и приёмников данных.
Потоки межно перенаправлять , например в другую программы.
Конвейер - читает данные из источника и тут же записывает их в приёмник.
System.IOStream – базовый абстрактный класс для всех потоков
FileStream – класс для работы с файлами
MemoryStream – класс с интерфейсом потока для работы с данными в оперативной памяти
BufferedStream – класс-обертка над другим Stream’ом, чтобы буферизировать порции данных перед записью данных в основной поток или же буферизировать чтение данных из основного потока - обеспечивает ускоренное чтение данных.
Некоторые свойства:
public abstract bool CanRead; // можно ли читать , можно ли писать.
public abstract bool CanWrite;
public abstract bool CanTimeout;
public abstract bool CanSeek;
public abstract long Length; // длина потока в байтах
public abstract long Position;
public virtual int ReadTimeout; // возможная задержка на чтение
public virtual int WriteTimeout;Некоторые методы:
public virtual void Close();
public abstract void Flush(); // обеспечивает физическую передачу данных на физическое устройствао. - три байта не пишутся на диск, а пишутся только когда блок достигает определенного размера - а этот метод позволяет записать любой объём на диск.
public abstract int Read(byte[] buffer, int offset, int count);
public int ReadByte();
public abstract long Seek(long offset, SeekOrigin origin);
public abstract void Write(byte[] buffer, int offset, int count);
public virtual void WriteByte(byte value);
----------------------------------
Классы-обертки над Stream
Класс Stream может оперировать только последовательностями (массивами) байт, читать и записывать другие типы данных в Stream неудобноДля записи/чтения различных данных в поток/из потока реализованы классы-обертки над Stream:
Например эту штуку удобно использовать джля записи строк.
Бинарное представление данных:
BinaryWriter
BinaryReaderТекстовое представление данных:
StreamWriter – наследник TextWriter
StreamReader – наследник TextReader
-----------------------------------------
Пример -// поток для записи
Stream stream = ...
...// создание обертки
StreamWriter writer = new StreamWriter(stream);
// запись данных
writer.WriteLine("Hello, World!");
// окончание работы с оберткой
writer.Close();
-----------------------------------------
====================================Раньше все функции проверки просто просто ради возвращали параметр успешности своего выполнения. Механизм обработки в си шарп - - ----------------- try { // код, который может вызвать исключение } catch(Exception1 e) { // обработка исключения Exception1 } … catch(ExceptionN e) { // обработка исключения ExceptionN } finally { // действия, которые будут выполнены всегда } ------------
- Log in to post comments
- 3268 reads