Работа с файлами в C#. Классы File и FileInfo. Получение информации о файле, копирование и удаление файла

Страницы работы

25 страниц (Word-файл)

Фрагмент текста работы

  • Метод CopyTo класса FileInfo принимает два параметра: путь, по которому файл будет копироваться, и булевое значение, которое указывает, надо ли при копировании перезаписывать файл (если true, файл при копировании перезаписывается). Если же в качестве последнего параметра передать значение false, то если такой файл уже существует, приложение выдаст ошибку.
  • Метод Copy класса File принимает три параметра: путь к исходному файлу, путь, по которому файл будет копироваться, и булевое значение, указывающее, будет ли файл перезаписываться.

3

Класс FileStream

  • Пример 2:

4

Класс FileStream

  • Пример 2:

5

Класс FileStream

  • Класс FileStream представляет возможности по считыванию из файла и записи в файл. Рассмотрим наиболее важные его свойства и методы:
    • Свойство Length: возвращает длину потока в байтах
    • Свойство Position: возвращает текущую позицию в потоке
    • Метод Read: считывает данные из файла в массив байтов. Принимает три параметра: int Read(byte[] array, int offset, int count) и возвращает количество успешно считанных байтов array - массив байтов, куда будут помещены считываемые из файла данные
    • offset  - смещение в байтах в массиве array, в который считанные байты будут помещены
    • count - максимальное число байтов, предназначенных для чтения. Если в файле находится меньшее количество байтов, то все они будут считаны.
    • Метод long Seek(long offset, SeekOrigin origin): устанавливает позицию в потоке со смещением на количество байт, указанных в параметре offset.
    • Метод Write: записывает в файл данные из массива байтов. Принимает три параметра: Write(byte[] array, int offset, int count)
    • array - массив байтов, откуда данные будут записываться в файла
    • offset  - смещение в байтах в массиве array, откуда начинается запись байтов в поток
    • count - максимальное число байтов, предназначенных для записи
  • FileStream представляет доступ к файлам на уровне байтов, поэтому, например, если надо считать или записать одну или несколько строк в текстовый файл, то массив байтов надо преобразовать в строки, используя специальные методы. Поэтому для работы с текстовыми файлами применяются другие классы.
  • В то же время при работе с различными бинарными файлами, имеющими определенную структуру FileStream может быть очень даже полезен для извлечения определенных порций информации и ее обработки.
  • В примере 2 выполняется считывание-запись в текстовый файл.

6

Класс FileStream

  • Разберем пример 2. Объект fstream1 создается через конструктор, а объект fstream2 - через один из статических методов класса File. Здесь в конструктор передается два параметра: путь к файлу и перечисление FileMode. Данное перечисление указывает на режим доступа к файлу и может принимать следующие значения:
    • Append: если файл существует, то текст добавляется в конец файл. Если файла нет, то он создается. Файл открывается только для записи.
    • Create: создается новый файл. Если такой файл уже существует, то он перезаписывается
    • CreateNew: создается новый файл. Если такой файл уже существует, то он приложение выбрасывает ошибку
    • Open: открывает файл. Если файл не существует, выбрасывается исключение
    • Create: создается новый файл. Если такой файл уже существует, то он перезаписывается
    • OpenOrCreate: если файл существует, он открывается, если нет - создается новый
    • Truncate: если файл существует, то он перезаписывается. Файл открывается только для записи.
  • Статический метод OpenRead класса File открывает файл для чтения и возвращает объект FileStream.
  • Конструктор класса FileStream также имеет ряд перегруженных версий, позволяющий более точно настроить создаваемый объект. Все эти версии можно посмотреть на msdn.
  • И при записи, и при чтении применяется объект кодировки Encoding.Default из пространства имен System.Text. В данном случае мы используем два его метода: GetBytes для получения массива байтов из строки и GetString для получения строки из массива байтов.
  • В итоге введенная строка записывается в файл. По сути это бинарный файл (не текстовый), хотя если в него записать только строку, то можно посмотреть в удобочитаемом виде этот файл, открыв его в текстовом редакторе. Однако если в него записать случайные байты, например: fstream1.WriteByte(13); fstream1.WriteByte(103);, то могут возникнуть проблемы с его пониманием

Похожие материалы

Информация о работе