Слайд 1Лекция 12.
Файловый ввод-вывод
дисциплина «Программирование»
Козьминых Н.М.
Слайд 2Пространство имен System.IO
Козьминых Н.М.
Пространство имен System.IO в .NET — это
область библиотек базовых классов, посвященная службам файлового ввода-вывода, а также
ввода-вывода из памяти
Многие типы из пространства имен System.IO сосредоточены на программных манипуляциях физическими каталогами и файлами
Слайд 3Основные классы System.IO
Козьминых Н.М.
Слайд 4Основные классы System.IO
Козьминых Н.М.
Слайд 5Представление файлов и папок
Козьминых Н.М.
Классы Directory и File содержат только
статические методы, а их экземпляры никогда не создаются
Классы DirectoryInfo и
FileInfo поддерживают состояние, а их члены не являются статическими. Сначала понадобится создать их экземпляр, который затем ассоциировать с определенной папкой или файлом.
Слайд 6Представление файлов и папок
Козьминых Н.М.
Слайд 7Свойства FileSystemInfo
Козьминых Н.М.
Слайд 8Класс FileInfo
Козьминых Н.М.
Слайд 9Пример использования
Козьминых Н.М.
// Создаем новый файл
FileInfo f = new
FileInfo(@"C:\Test.dat");
FileStream fs = f.Create();
…
// Закрыть файловый поток
fs.Close();
Слайд 10Класс DirectoryInfo
Козьминых Н.М.
Слайд 11Пример использования
Козьминых Н.М.
// Привязаться к текущему рабочему каталогу
DirectoryInfo dir1
= new DirectoryInfo(".");
// Привязаться к C:\Windows
DirectoryInfo dir2 =
new DirectoryInfo(@"C:\Windows");
// Привязаться к несуществующему каталогу, затем создать его
DirectoryInfo dir3 = new DirectoryInfo(@"C:\MyCode\Testing");
dir3.Create();
Слайд 12Класс Stream
Козьминых Н.М.
Класс System.IO.Stream представляет байтовый поток и является базовым
для всех остальных классов потоков
Является абстрактным классом, а это означает,
что получить экземпляр объекта класса Stream нельзя
Слайд 13Иерархия классов, которые имеют отношение к потокам
Козьминых Н.М.
Слайд 15Класс FileStream
Козьминых Н.М.
Класс FileStream подходит для потоковой работы с файлами
Для
создания экземпляра FileStream потребуется указать следующие фрагменты информации:
Файл, к которому
должен получаться доступ.
Режим открытия файла. Например, планируется создать новый файл или же открыть существующий.
Вид доступа к файлу. Например, нужен ли доступ для выполнения чтения или записи.
Общий доступ, который показывает, должен ли доступ к файлу быть эксклюзивным или же должна быть возможность доступа со стороны других потоков одновременно.
Слайд 17Пример использования
Козьминых Н.М.
// Создает файл с доступом для чтения и
записи и позволяет
// другим потокам получать к нему доступ
для чтения
FileStream fs = new FileStream(@"С:\С# Projects\Project.doc", FileMode.Create);
// Делает то же самое, что и предыдущий, но позволяет
// другим потокам получать доступ к файлу для записи
FileStream fs2 = new FileStream(@"С:\С# Projects\Project2.doc", FileMode.Create, FileAccess.Write);
// Делает то же самое, что и предыдущие конструкторы, но не
// позволяет другим потокам получать доступ к файлу до тех пор,
// пока fs3 остается открытым
FileStream fs3 = new FileStream(@"С:\С# Projects\Project3.doc", FileMode.Create, FileAccess.Write, FileShare.None);
// После окончания работы поток нужно закрыть
fs.Close(); fs2.Close(); fs3.Close();
Слайд 18Классы StreamWriter и StreamReader
Козьминых Н.М.
Классы StreamWriter и StreamReader удобны во
всех случаях, когда нужно читать или записывать символьные данные (например,
строки)
Слайд 19Классы BinaryWriter и BinaryReader
Козьминых Н.М.
Классы BinaryReader и BinaryWriter служат для
чтения и записи двоичных значений
Класс BinaryWriter служит оболочкой, в которую
заключается байтовый поток, управляющий выводом двоичных данных
Класс BinaryReader служит оболочкой, в которую заключается байтовый поток, управляющий вводом двоичных данных
Слайд 20
Козьминых Н.М.
BinaryWriter dataOut;
int i = 10;
double d =
1023.56;
bool b = true;
string str = "Это текст";
// Открыть файл для ввода
try {
dataOut = new BinaryWriter(new FileStream("C:/testData",FileMode.Create));
} catch (IOException ex) {
MessageBox.Show("Ошибка открытия файла: " + ex.Message);
return;
}
// Записать данные в файл
try {
dataOut.Write(i);
dataOut.Write(d);
dataOut.Write(b);
dataOut.Write(str);
} catch (IOException ex) {
MessageBox.Show("Ошибка ввода-вывода файла: " + ex.Message);
return;
} finally {
dataOut.Close();
}
Слайд 21Вопросы…
Спасибо за внимание
Козьминых Н.М.