Файлы
Елабуга 2013
Лабораторная работа №3
Файлы
Цель: Научиться писать программы на C#, работающие с файлами.
Теоретические сведения
В C# ввод/вывод данных реализуют с помощью потоков. Под потоком понимается вывод либо получение информации. Поток связан с физическим устройством посредством системы ввода/вывода C#. Потоки используются для работы с консолью и файлами.
На самом низком уровне все операции ввода/вывода в C# оперируют байтами, потому что большинство устройств, предназначенных для выполнения операций ввода/вывода, являются байт-ориентированными. Но байтовые потоки неудобно использовать при выполнении символьного ввода/вывода. Преимущество символьных потоков проявляется в том, что они оперируют непосредственно с символами Unicode. Поэтому, если возникает потребность в хранении текста Unicode, наилучшим выбором в этом случае будут символьные потоки. Поэтому в C# используются несколько классов, преобразующих байтовые потоки в символьные и обратно.
Рассмотрим сначала байт-ориентированный ввод/вывод в файл, а затем символьный.
|
|
Байт-ориентированный ввод/вывод в файл
Для создания байтового потока, связанного с файлом, используется класс FileStream. Все классы потоков (в том числе и класс FileStream) определены в пространстве имен System.IO. Поэтому обычно в начало любой программы, применяющей классы потоков, включается конструкция:
using System.IO;
Открытие и закрытие файла
При создании байтового потока, связанного с файлом, требуется сформировать объект FileStream. Синтаксис создания следующий:
FileStream(string filename, FileMode mode);
где filename – указывает имя открываемого файла, которое может включать полностью определенный путь к нему.
mode – определяет, каким образом открывается файл. Может принимать одно из следующих значений (таблица 1).
Таблица 1
Значение | Описание |
FileMode.Append | Выводимые данные добавляются после данных, находящихся в файле. |
FileMode.Create | Создается новый выходной файл. Любой ранее созданный файл с аналогичным именем уничтожается. |
FileMode.CreateNew | Создается новый выходной файл. |
FileMode.Open | Открывается существующий файл. |
FileMode.OpenOrCreate | В случае наличия файла происходит его открытие, если файл не существует, он создается. |
FileMode.Truncate | Открывается существующий файл, но его длина усекается до нуля. |
При любой работе с файлами, необходимо осуществлять проверку возможных ошибок. В C# для этого используется система обработки исключений. Исключения – это возможные ошибки, возникающие при работе программы.
При открытии файла возможны следующие исключения:
· FileNotFoundException – файл не может быть открыт, поскольку он не существует;
|
|
· IOException – файл не открывается из-за ошибки ввода/вывода;
· ArgumentNullException – имя файла выражается нулевым значением,
· ArgumentException – параметр, задающий режим открытия файла, некорректен,
· SecurityException – пользователь не имеет прав доступа,
· DirectoryNotFoundException – указанный каталог не существует.
Рассмотрим пример открытия файла test.txt и обработки возможных исключений: