- •17. Работа с файлами.
- •17.1 Классы для работы с папками и файлами
- •17.1.1 Класс Directory
- •Пример: Создадим приложение, позволяющее создавать, удалять, переименовывать папки, а также определять их наличие.
- •Реализуем приложение с компонентами button1..button4 и textbox1
- •На событие Click компонента button1 будем создавать папку с именем из textBox1 в
- •На событие Click компонента button2 будем проверять наличие папки с именем из textBox2
- •Почему?
- •17.1.2 Класс File
- •Пример: Применение методов класса
- •17.1.3 Класс FileSystemInfo
- •17.1.4 Класс DirectoryInfo
- •17.1.5 Множество FileAttributes
- •Пример:
- •17.1.6 Класс FileInfo
- •// Создаем новый файл.
- •17.2 Потоки данных
- •17.2.1 Потоки, связанные с файлами
- •17.2.2 Работа с двоичными файлами
- •В классе FileStream существует конструктор, позволяющий определить не только путь к файлу, но
- •После создания потока на базе файла (FileStream) следует на базе этого потока создать
- •Для записи в файл двоичных данных используется метод Write:
- •Для записи в файл двоичных данных используется метод Write:
- •Пример: создание двоичного файла, запись и чтение данных
- •// чтение из файла
- •17.2.3 Работа текстовыми файлами
- •Если открыть наш файл в блокноте, то получится следующее:
- •Непонятна также и запись текста этих строк. Проблема в том, что существуют различные
- •Кодировка указывается как статическое свойство класса System.Text.Encoding.
17. Работа с файлами.
Цель любой программы состоит в обработке информации. При этом классическим способом хранения информации является файлы. Файл всегда должен имя, файл может иметь потенциально неограниченный, но всегда конечный размер.
Файл можно создать, при этом если создается файл с существующим названием, то старый файл будет уничтожен (точнее очищен).
Существующий файл можно открыть. Открыть файл можно для чтения, записи или для чтения и записи.
Каждый открытый файл имеет текущий указатель. Этот указатель определяет, какая часть файла будет прочитана следующей операцией чтения или в какую часть будет записаны данные операцией записи.
Для работы (чтение и запись) с потоками, файлами и файловой системой предназначено пространство имен
System.IO.
17.1 Классы для работы с папками и файлами
Для работы с файлами и папками в пространстве имен System.IO существуют следующие классы:
Directory – содержит статические методы для выполнения различных операций с папками (создание, удаление, проверка существования и т. п.).
DirectoryInfo – аналогичен классу Directory, только его методы не статические – для использования этого класса надо создать его экземпляр (параметром для конструктора служит имя папки).
File – содержит статические методы для выполнения различных операций с файлами (создание, удаление, копирование и т. п.).
FileInfo – аналогичен классу File, только его методы не статические – для использования этого класса надо создать
его экземпляр (параметром для конструктора служит имя
17.1.1 Класс Directory
Этот класс содержит статические методы для работы с папками (в отличие от класса DirectoryInfo, который
содержит аналогичные методы, применяемые для экзампляра класса)
Основные методы класса Directory:
CreateDirectory – создает папку с указанным именем.
Exists – проверяет существование папки с указанным именем.
Delete – удаляет папку с указанным именем.
Move – перемещает или переименовывает папку с указанным именем.
Пример: Создадим приложение, позволяющее создавать, удалять, переименовывать папки, а также определять их наличие.
Вначале создадим пустую папку «D:\test»
Реализуем приложение с компонентами button1..button4 и textbox1
Для подключения пространства имен System.IO добавим в описание соответствующую строку:
|
Подключение |
using System; |
System.IO |
|
|
using System.Collections.Generic; |
|
... |
|
//Подключаем необходимое пространство имен. |
|
using System.IO; |
|
На событие Click компонента button1 будем создавать папку с именем из textBox1 в папке «D:\test»:
private void button1_Click(object sender, EventArgs e)
{
Directory.CreateDirectory("D:\\test\\"+textBox1.Text);
}
На событие Click компонента button2 будем проверять наличие папки с именем из textBox2 в папке «D:\test»:
private void button2_Click(object sender, EventArgs e)
{
if (Directory.Exists("D:\\test\\" + textBox2.Text)==true)
{ label1.Text = "Существует"; }
else { label1.Text = "Не существует"; };
}
На событие Click компонента button3 папке с именем из textBox3 в папке «D:\test» дадим имя из textBox4:
private void button3_Click(object sender, EventArgs e)
{
if (Directory.Exists("D:\\test\\”+textBox3.Text) == true)
Directory.Move("D:\\test\\" + textBox3.Text,
На событие Click компонента button3 папке с именем из textBox3 в папке «D:\test» дадим имя из textBox4:
private void button4_Click(object sender, EventArgs e)
{
Directory.Delete("D:\\test\\" + textBox5.Text);
}