
- •11. Организация работы с файлами
- •11.1. Использование стандартных диалоговых окон открытия и сохранения файлов
- •11.2. Использование стандартного диалогового окна обзора папок
- •11.3. Использование класса System.Io.File для работы с файлами
- •If (!File.Exists(path))
- •If (!File.Exists(path))
- •If (!File.Exists(path))
- •If (!File.Exists(path))
- •If (!File.Exists(path))
- •11.4. Использование класса System.Io.Directory для работы с папками
- •If (Directory.Exists(currentDir)) // Если папка существует
- •If (Directory.Exists(sourceDir) & Directory.Exists(destDir) &
- •If (Directory.Exists(destDir)) // Если папка существует
- •11.5. Использование класса System.Io.Path для работы со строкой пути к папке или файлу
- •If (Path.HasExtension(path1))
- •If (!Path.HasExtension(path2))
- •If (!Path.IsPathRooted(path3))
- •11.6. Использование класса System.Io.FileInfo для работы с файлами
- •If (!fi1.Exists)
- •11.7. Использование класса System.Io.DirectoryInfo для работы с файлами и папками
- •If (cd.Exists) // Если заданная папка существует...
- •If (sd.Exists & dd.Exists & !md.Exists)
- •If (dd.Exists) // Если папка существует
- •11.8. Использование класса System.Io.DriveInfo для работы с дисками
- •11.9. Использование класса System.Io.FileStream для работы с файлами
- •If (fs.CanRead && fs.CanWrite)
- •11.10. Использование классов System.Io.StreamReader и System.Io.StreamWriter для работы с файлами
11. Организация работы с файлами
Классы (из пространства имен System.IO) для работы с файлами и каталогами: File, Directory, Path, FileInfo, DirectoryInfo, DriveInfo, FileStream, StreamReader, StreamWriter, BinaryReader, BinaryWriter, TextReader, TextWriter.
Типы файлов, определяющих организационную структуру хранения информации в файле и способ доступа к информации:
– файлы последовательного доступа;
– файлы произвольного доступа;
– двоичные (бинарные) файлы.
Этапы типовой процедуры работы с файлом:
– открытие файла;
– операции с файлом;
– закрытие файла.
11.1. Использование стандартных диалоговых окон открытия и сохранения файлов
(http://msdn.microsoft.com/ru-ru/library/system.windows.forms.openfiledialog.aspx)
(http://msdn.microsoft.com/ru-ru/library/system.windows.forms.savefiledialog.aspx)
Рис.11.1. Диалоговые окна открытия (а) и сохранения (б) файлов
Пример 11.1. Использование стандартного диалогового окна открытия файлов для выбора открываемого файла. Пример требует создания формы с кнопкой (btnOpenFile) для вызова этого диалогового окна и текстовым полем (txtFile) для помещения в него имени выбранного файла.
private void btnOpenFile_Click(object sender, EventArgs e)
{ // Создание объекта диалогового окна OpenFileDialog
OpenFileDialog openFileDialog1 = new OpenFileDialog();
// Настройка свойств диалогового окна
openFileDialog1.Title = "Открытие файла";
openFileDialog1.InitialDirectory = "c:\\";
openFileDialog1.Filter =
"Text files (*.txt)|*.txt|All files (*.*)|*.*";
openFileDialog1.FilterIndex = 1;
openFileDialog1.ShowReadOnly = true;
openFileDialog1.RestoreDirectory = true;
// Открытие диалогового окна и запись полного имени
// выбранного в окне файла в текстовое поле
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{ txtFile.Text = openFileDialog1.FileName;
// Операции открытия файла, чтения из него и закрытия
}
else
txtFile.Text = "";
}
Пример 11.2. Использование стандартного диалогового окна сохранения файлов для выбора места сохранения файла. Пример требует создания формы с кнопкой (btnSaveFile) для вызова этого диалогового окна и текстовым полем (txtFile) для помещения в него имени выбранного файла.
private void btnSaveFile_Click(object sender, EventArgs e)
{ // Создание объекта диалогового окна SaveFileDialog
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
// Настройка свойств диалогового окна
saveFileDialog1.Title = "Сохранение файла";
saveFileDialog1.Filter =
"Text files (*.txt)|*.txt|All files (*.*)|*.*";
saveFileDialog1.FilterIndex = 1;
saveFileDialog1.RestoreDirectory = true;
saveFileDialog1.OverwritePrompt = true;
// Открытие диалогового окна и запись полного имени
// заданного в окне файла в текстовое поле
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{ txtFile.Text = saveFileDialog1.FileName;
// Операции открытия файла, записи в него и закрытия
}
}
Таблица 11.1. Основные свойства классов OpenFileDialog и SaveFileDialog из пространства имен System.Windows.Forms
Свойства класса OpenFileDialog |
Свойства класса SaveFileDialog |
Описание |
AddExtension |
AddExtension |
При установленном значении True добавляет расширение к имени файла, если оно не указано. При этом в качестве расширения используется значение, задаваемое свойством DefaultExt или Filter. |
CheckFileExists |
CheckFileExists |
При установленном значении True проверяет существование файла с указанным именем и в случае его отсутствия выдает предупреждение. |
CheckPathExists |
CheckPathExists |
При установленном значении True проверяет существование пути к указанному файлу и в случае его отсутствия выдает предупреждение. |
– |
CreatePrompt |
При установленном значении True в случае указания несуществующего файла выдается запрос на разрешение создать новый файл. |
DefaultExt |
DefaultExt |
Определяет расширение файла, добавляемое по умолчанию в случае, когда пользователь вводит имя файла без расширения. |
FileName |
FileName |
Определяет полное имя файла, выбранного в диалоговом окне. |
FileNames |
FileNames |
Определяет полные имена всех файлов, выбранных в диалоговом окне. |
Filter |
Filter |
Задает значения списка Тип файла, определяющего фильтр отображаемых в окне файлов. Например, для отображения только текстовых файлов нужно этому свойству задать значение "Text files (*.txt)|*.txt" (т.е. описание типа файлов и шаблон). Для задания нескольких фильтров, в качестве их разделителя применяется символ "|", напри-мер: "Text files (*.txt)|*.txt|All files (*.*)|*.*". |
FilterIndex |
FilterIndex |
Задает отображаемый по умолчанию фильтр при использовании нескольких фильтров. |
InitialDirectory |
InitialDirectory |
Задает каталог, отображаемый при первом вызове диалогового окна. По умолчанию используются активные устройство и папка, т.е. те, которые просматривались при последнем вызове этого диалогового окна. |
Multiselect |
– |
При установленном значении True позволяет выбирать несколько файлов в диалоговом окне. |
– |
OverwritePrompt |
При установленном значении True (рекомендуется) в случае выбора существующего файла выдается сообщение, что данный файл уже существует и будет перезаписан. |
ReadOnlyChecked |
– |
Определяет, установлен ли флажок доступности только для чтения. |
RestoreDirectory |
RestoreDirectory |
При установленном значении True задает отображение при очередном вызове того каталога, который открывался при последнем вызове диалогового окна. |
SafeFileName |
– |
Определяет имя и расширение файла, выбранного в диалоговом окне (без указания пути). |
SafeFileNames |
– |
Определяет имена и расширения всех файлов, выбранных в диалоговом окне (без указания путей). |
ShowHelp |
ShowHelp |
Определяет, отображается ли в диалоговом окне кнопка "Справка". |
ShowReadOnly |
– |
Определяет, отображается ли в диалоговом окне флажок доступности только для чтения. |
Title |
Title |
Определяет текст заголовка диалогового окна. По умолчанию окну присваивается стандартный для Windows заголовок. |
Таблица 11.2. Некоторые методы и события классов OpenFileDialog и SaveFileDialog из пространства имен System.Windows.Forms
Имя |
Описание |
Методы |
|
OpenFile(); |
Открывает файл, выбранный пользователем, с разрешением только для чтения (для OpenFileDialog) или чтения и записи (для SaveFileDialog). Имя файла указано в свойстве FileName. |
Reset(); |
Сбрасывает все свойства диалогового окна в их значения по умолчанию. |
ShowDialog(); |
Запускает общее диалоговое окно с владельцем по умолчанию. |
ShowDialog(v); |
Запускает общее диалоговое окно с указанным владельцем. |
События |
|
FileOk |
Происходит при нажатии пользователем кнопки Open или Save в диалоговом окне (окно закрывается). |
HelpRequest |
Происходит при нажатии пользователем кнопки Help в диалоговом окне (окно не закрывается). |