Файловый ввод-вывод

Содержание

Слайд 2

Пространство имен System.IO Козьминых Н.М. Пространство имен System.IO в .NET —

Пространство имен System.IO

Козьминых Н.М.

Пространство имен System.IO в .NET — это область

библиотек базовых классов, посвященная службам файлового ввода-вывода, а также ввода-вывода из памяти
Многие типы из пространства имен System.IO сосредоточены на программных манипуляциях физическими каталогами и файлами
Слайд 3

Основные классы System.IO Козьминых Н.М.

Основные классы System.IO

Козьминых Н.М.

Слайд 4

Основные классы System.IO Козьминых Н.М.

Основные классы System.IO

Козьминых Н.М.

Слайд 5

Представление файлов и папок Козьминых Н.М. Классы Directory и File содержат

Представление файлов и папок

Козьминых Н.М.

Классы Directory и File содержат только статические

методы, а их экземпляры никогда не создаются
Классы DirectoryInfo и FileInfo поддерживают состояние, а их члены не являются статическими. Сначала понадобится создать их экземпляр, который затем ассоциировать с определенной папкой или файлом.
Слайд 6

Представление файлов и папок Козьминых Н.М.

Представление файлов и папок

Козьминых Н.М.

Слайд 7

Свойства FileSystemInfo Козьминых Н.М.

Свойства FileSystemInfo

Козьминых Н.М.

Слайд 8

Класс FileInfo Козьминых Н.М.

Класс FileInfo

Козьминых Н.М.

Слайд 9

Пример использования Козьминых Н.М. // Создаем новый файл FileInfo f =

Пример использования

Козьминых Н.М.

// Создаем новый файл
FileInfo f = new FileInfo(@"C:\Test.dat");


FileStream fs = f.Create();

// Закрыть файловый поток
fs.Close();
Слайд 10

Класс DirectoryInfo Козьминых Н.М.

Класс DirectoryInfo

Козьминых Н.М.

Слайд 11

Пример использования Козьминых Н.М. // Привязаться к текущему рабочему каталогу DirectoryInfo

Пример использования

Козьминых Н.М.

// Привязаться к текущему рабочему каталогу
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

Козьминых Н.М.

Класс System.IO.Stream представляет байтовый поток и является базовым для

всех остальных классов потоков
Является абстрактным классом, а это означает, что получить экземпляр объекта класса Stream нельзя
Слайд 13

Иерархия классов, которые имеют отношение к потокам Козьминых Н.М.

Иерархия классов, которые имеют отношение к потокам

Козьминых Н.М.

Слайд 14

Класс Stream Козьминых Н.М.

Класс Stream

Козьминых Н.М.

Слайд 15

Класс FileStream Козьминых Н.М. Класс FileStream подходит для потоковой работы с

Класс FileStream

Козьминых Н.М.

Класс FileStream подходит для потоковой работы с файлами
Для создания

экземпляра FileStream потребуется указать следующие фрагменты информации:
Файл, к которому должен получаться доступ.
Режим открытия файла. Например, планируется создать новый файл или же открыть существующий.
Вид доступа к файлу. Например, нужен ли доступ для выполнения чтения или записи.
Общий доступ, который показывает, должен ли доступ к файлу быть эксклюзивным или же должна быть возможность доступа со стороны других потоков одновременно.
Слайд 16

Класс 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 удобны

Классы StreamWriter и StreamReader

Козьминых Н.М.

Классы StreamWriter и StreamReader удобны во всех

случаях, когда нужно читать или записывать символьные данные (например, строки)
Слайд 19

Классы BinaryWriter и BinaryReader Козьминых Н.М. Классы BinaryReader и BinaryWriter служат

Классы BinaryWriter и BinaryReader

Козьминых Н.М.

Классы BinaryReader и BinaryWriter служат для чтения

и записи двоичных значений
Класс BinaryWriter служит оболочкой, в которую заключается байтовый поток, управляющий выводом двоичных данных
Класс BinaryReader служит оболочкой, в которую заключается байтовый поток, управляющий вводом двоичных данных
Слайд 20

Козьминых Н.М. BinaryWriter dataOut; int i = 10; double d =

Козьминых Н.М.

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();
}