Скачать презентацию Пространство имен System IO ü В пространстве имен Скачать презентацию Пространство имен System IO ü В пространстве имен

12_C#_IO.pptx

  • Количество слайдов: 17

Пространство имен System. IO ü В пространстве имен System. IO находятся классы для работы Пространство имен System. IO ü В пространстве имен System. IO находятся классы для работы с файловой системой. ü Три группы классов: • Классы для работы с файлами и каталогами (создание, переименование, удаление и т. д. ) • Потоковые классы описывают источник/приемник данных. • Классы читатели/писатели (readers/writers) описывают способы записи/чтения.

Классы для работы с файлами и каталогами System. Object System. IO. File System. IO. Классы для работы с файлами и каталогами System. Object System. IO. File System. IO. Directory System. IO. File. System. Info System. IO. Directory. Info System. IO. File. Info File Directory только статические методы для работы с файлами и каталогами Абстрактный базовый класс File. System. Info общие экземплярные методы для работы с файлами и каталогами, например, свойство public Date. Time Last. Access. Time {get; set; } File. Info Directory. Info только экземплярные методы для работы с файлами и каталогами ü Статические методы классов File и Directoty при каждом вызове выполняют проверку прав доступа (security check). Более эффективны при однократной операции с файлом или каталогом. ü Экземплярные методы классов File. Info и Directory. Info больше подходят для многократных операций с файлом или каталогом.

Классы для работы с каталогами. Пример Console. Write. Line(Directory. Get. Current. Directory()); try { Классы для работы с каталогами. Пример Console. Write. Line(Directory. Get. Current. Directory()); try { Directory. Set. Current. Directory(". . \"); Console. Write. Line(Directory. Get. Current. Directory()); Directory. Set. Current. Directory("Bin\Debug"); Console. Write. Line(Directory. Get. Current. Directory()); Directory. Set. Current. Directory("\"); Console. Write. Line(Directory. Get. Current. Directory()); } catch (Exception ex) { Console. Write. Line(ex. Message); } ü Вывод: D: C#_2010_2011SamplesIO_DemobinDebug D: C#_2010_2011SamplesIO_DemoIO_DemoBinDebug D:

Некоторые методы классов File и File. Info ü Класс File: public static File. Stream Некоторые методы классов File и File. Info ü Класс File: public static File. Stream Create( string path ); public static File. Stream Open( string path, File. Mode mode, File. Access access, File. Share share ); public static File. Stream Open. Read( string path ); public static File. Stream Open. Write( string path ); ü Класс File. Info: public File. Info( string file. Name ); // конструктор public File. Stream Create(); public File. Stream Open( File. Mode mode, File. Access access, File. Share share ); public File. Stream Open. Read(); public File. Stream Open. Write();

Некоторые методы классов File и File. Info -2 Create() • файл создается, если не Некоторые методы классов File и File. Info -2 Create() • файл создается, если не существует; • файл перезаписывается, если существует и не имеет атрибута read-only; • бросается исключение, если существует и имеет атрибут read-only; • все пользователи имеют права записи/чтения; Open. Read() cоздает поток только для чтения; Open. Write() создает поток только для записи;

Перечисление File. Mode Append • открывает, если существует; • создает, если не существует; • Перечисление File. Mode Append • открывает, если существует; • создает, если не существует; • текущая позиция в конце файла; • только с File. Access. Write; Create • создает, если не существует; • перезаписывает, если существует; Create. New • создает, если не существует; • бросает исключение, если существует; Open • открывает, если существует; • бросает исключение, если не существует; Open. Or. Create • открывает, если существует; • создает, если не существует; Truncate • открывает, если существует; • устанавливает длину 0; • бросает исключение, если не существует; public enum File. Access { Read , Read. Write, Write };

Классы для работы с потоками System. IO. Stream System. IO. Buffered. Stream System. IO. Классы для работы с потоками System. IO. Stream System. IO. Buffered. Stream System. IO. File. Stream System. IO. Memory. Stream System. Net. Sockets. Network. Stream System. Security. Cryptography. Crypto. Stream abstract class Stream • поддерживает чтение/запись байт; • по умолчанию выполняет синхронные операции чтения/ записи; • есть асинхронные операции; File. Stream поток файловой системы; имеет внутренний буфер – блок памяти для кэширования данных для уменьшения обращений к OC; Memory. Stream поток, связанный с областью памяти; Buffered. Stream добавляет буферизацию к другим потокам; Network. Stream поток, связанный с socket; Crypto. Stream поток с шифрованием данных;

Класс File. Stream ü Класс имеет 9 конструкторов public File. Stream( string path, File. Класс File. Stream ü Класс имеет 9 конструкторов public File. Stream( string path, File. Mode mode ); public File. Stream( string path, File. Mode mode, File. Access access ); public File. Stream( string path, File. Mode mode, File. Access access, File. Share share, int buffer. Size, bool use. Async ); ü Потоковые классы поддерживают только самые простые операции чтения/записи: Чтение/запись одного байта: public override int Read. Byte(); public override void Write. Byte( byte value ); Чтение/запись блока байт: public override void Write ( byte[] array, int offset, int count ); public override int Read ( byte[] array, int offset, int count );

Классы читатели/писатели System. Object System. IO. Binary. Reader System. IO. Binary. Writer Binary. Reader Классы читатели/писатели System. Object System. IO. Binary. Reader System. IO. Binary. Writer Binary. Reader Binary. Writer используются для чтения и записи в файл значений простых типов как последовательности байт; System. IO. Text. Reader System. IO. Stream. Reader System. IO. String. Reader System. IO. Text. Writer System. IO. Stream. Writer System. IO. String. Writer Text. Reader Text. Writer (абстрактные) работают с символами Unicode; Stream. Reader Stream. Writer используются для чтения и записи информации в текстовом виде; String. Reader String. Writer реализация Text. Reader и Text. Writer для строк;

Классы Binary. Reader и Binary. Writer ü Классы Binary. Reader и Binary. Writer применяются Классы Binary. Reader и Binary. Writer ü Классы Binary. Reader и Binary. Writer применяются для чтения и записи в файл значений простых типов как последовательности байт. ü В Binary. Reader и Binary. Writer определены конструкторы (2): public Binary. Reader( Stream input ); public Binary. Reader( Stream input, Encoding encoding ); public Binary. Writer( Stream output, Encoding encoding ); ü Для параметра Encoding по умолчанию используется System. Text. UTF 8 Encoding System. Text. Encoding System. Text. ASCIIEncoding System. Text. Unicode. Encoding System. Text. UTF 7 Encoding System. Text. UTF 8 Encoding

Классы Binary. Reader и Binary. Writer -2 ü В классе Binary. Writer перегружен метод Классы Binary. Reader и Binary. Writer -2 ü В классе Binary. Writer перегружен метод Write для всех примитивных типов и для массивов byte и char: public virtual void Write( bool value ); public virtual void Write( int value ); public virtual void Write( double value ); public virtual void Write( string value ); public virtual void Write( byte[] buffer, int index, int count ); public virtual void Write( char[] chars ); ü B классе Binary. Reader для каждого встроенного типа определен метод со своим именем : Read. Boolean, Read. Int 32, … public virtual bool Read. Boolean(); public virtual int Read. Int 32(); public virtual double Read. Double(); public virtual string Read. String(); public virtual byte[] Read. Bytes( int count ); public virtual char[] Read. Chars( int count );

Классы Binary. Reader и Binary. Writer. Пример ü В методах Write(string file. Name) и Классы Binary. Reader и Binary. Writer. Пример ü В методах Write(string file. Name) и Read(string file. Name) класса Student записываются в файл и читаются из файла данные объекта. public void Write(string file. Name) { File. Stream fs ; try { fs = new File. Stream (file. Name, File. Mode. Open. Or. Create) | Binary. Writer bw = new Binary. Writer(fs); Console. Write. Line("Write 1: stream length = {0} stream position = {1}n Can. Read {2} Can. Write {3}", fs. Length, fs. Position, fs. Can. Read, fs. Can. Write); bw. Write(ball); bw. Write(group); bw. Write(names[0]); bw. Write(names[1]); // bw. Write(date); bw. Write(date. Year); bw. Write(date. Month); bw. Write(date. Day); } catch (Exception ex) { Console. Write. Line(ex. Message); } finally { if (fs!= null) fs. Close(); } } public void Read(string file. Name) { File. Stream fs; try { fs = new File. Stream (file. Name, File. Mode. Open, File. Access. Read); Binary. Reader br = new Binary. Reader(fs); ball = br. Read. Double(); group = br. Read. Int 32(); names[0] = br. Read. String(); names[1] = br. Read. String(); int year = br. Read. Int 32(); int month = br. Read. Int 32(); int day = br. Read. Int 32(); date = new Date. Time(year, month, day) } catch (Exception ex) { Console. Write. Line(ex. Message); } finally { if (fs!=null) fs. Close(); } }

Классы Text. Writer, Stream. Writer и String. Writer System. IO. Text. Writer System. IO. Классы Text. Writer, Stream. Writer и String. Writer System. IO. Text. Writer System. IO. Stream. Writer System. IO. String. Writer ü Класс Text. Writer - абстрактный. ü В классе Stream. Writer определены конструкторы (7 перегрузок): public Stream. Writer( Stream stream ) ; public Stream. Writer( string path ); public Stream. Writer( Stream stream, Encoding encoding ); ü Конструкторы класса String. Writer (4) public String. Writer(); public String. Writer( String. Builder sb );

Классы Text. Writer, Stream. Writer и String. Writer -2 ü Методы для записи текстовой Классы Text. Writer, Stream. Writer и String. Writer -2 ü Методы для записи текстовой информации в классах Stream. Writer и String. Writer переопределяют виртуальные методы из класса Text. Writer. ü Методы Write() и Write. Line() записывают в поток значение в текстовом виде. Методы Write. Line() добавляют конец строки. ü Методы Write() и Write. Line() перегружены для всех встроенных типов. public virtual void Write( bool value ); public virtual void Write( double value ): public virtual void Write( int value ) ; ü Методы Write() и Write. Line() c параметрами типа object для преобразования значений в текстовый вид используют метод To. String() или строку формата. public void Write( Object value ) ; public virtual void Write( string format, Object arg 0 ) ; public virtual void Write( string format, Object[] arg );

Символы конца строки в методах Write. Line() ü Методы Write. Line() добавляют в поток Символы конца строки в методах Write. Line() ü Методы Write. Line() добавляют в поток символы конца строки. По умолчанию используется комбинация символов “rn”. ü Свойство New. Line класса Text. Writer дает возможность выбрать другую последовательность символов, которые будут обозначать конец строки. public virtual string New. Line { get; set; } ü В методах Read. Line() cтрокой (line) считается последовательность символов, которая завершается символом новой строки ‘n” или символом возврата каретки ‘ r ‘ или подряд идущими символами “rn”.

Классы Text. Reader, Stream. Reader и String. Reader System. IO. Text. Reader System. IO. Классы Text. Reader, Stream. Reader и String. Reader System. IO. Text. Reader System. IO. Stream. Reader System. IO. String. Reader ü Класс Text. Reader - абстрактный. ü В классе Stream. Reader определены конструкторы (10 перегрузок): public Stream. Reader( Stream stream ) ; public Stream. Reader( string path ); public Stream. Reader( Stream stream, Encoding encoding ); ü Единственный конструктор класса String. Reader public String. Reader( string s );

Классы Text. Reader, Stream. Reader и String. Reader -2 ü Методы для чтения текстовой Классы Text. Reader, Stream. Reader и String. Reader -2 ü Методы для чтения текстовой информации в классах Stream. Reader и String. Reader переопределяют виртуальные методы из класса Text. Reader. public virtual int Read(); public virtual int Read( char[] buffer, int index, int count ); public virtual int Read. Block( char[] buffer, int index, int count ); public virtual string Read. Line(): public virtual string Read. To. End(); ü Метод Read() читает из потока один символ. ü Методы Read() и Read. Block() читают не более count символов и сохраняют их в массиве buffer, начиная с индекса index. ü В методах Read. Line() cтрокой (line) считается последовательность символов, которая завершается символом новой строки( n ) или символом возврата каретки ( r ) или подряд идущими символами( rn). Возвращаемая строка не содержит эти символы.