
- •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 для работы с файлами
If (!fi1.Exists)
{ StreamWriter sw = fi1.CreateText();
sw.WriteLine("Hello"); //
sw.WriteLine("And"); // Запись строк в файл
sw.WriteLine("Welcome"); //
sw.Close(); // Закрытие файла
}
// Открытие файла для чтения.
StreamReader sr = fi1.OpenText();
string line = "";
Console.WriteLine("Файл {0} содержит:", path);
while ((line = sr.ReadLine()) != null) // Чтение строк из файла
Console.WriteLine(line); // Вывод считанных строк
sr.Close(); // Закрытие файла
Console.ReadLine();
string path2 = @"c:\temp\Test2.txt";
FileInfo fi2 = new FileInfo(path2);
fi1.CopyTo(path2); // Копирование файла
Console.WriteLine("Файл {0} был скопирован в {1} .",
path, path2);
// Открытие нового файла для чтения.
StreamReader sr2 = fi2.OpenText();
Console.WriteLine("Файл {0} содержит:", path2);
// Чтение строк из скопированного файла и вывод их на экран
while ((line = sr2.ReadLine()) != null)
Console.WriteLine(line);
sr2.Close(); // Закрытие файла
Console.ReadLine();
fi2.Delete(); // Удаление скопированного файла
Console.WriteLine("Файл {0} был успешно удален.", path2);
Console.ReadLine();
}
}
/* Вывод:
Файл c:\temp\Test.txt содержит:
Hello
And
Welcome
Файл c:\temp\Test.txt был скопирован в c:\temp\Test.txt .
Файл c:\temp\Test2.txt содержит:
Hello
And
Welcome
Файл c:\temp\Test2.txt был успешно удален.
*/
11.7. Использование класса System.Io.DirectoryInfo для работы с файлами и папками
(http://msdn.microsoft.com/ru-ru/library/system.io.directoryinfo.aspx)
Таблица 11.12. Основные свойства и методы класса DirectoryInfo из пространства имен System.IO
Имя |
Описание |
Поля |
|
FullPath |
Представляет полный путь к каталогу или файлу. |
OriginalPath |
Первоначально заданный пользователем относительный или абсолютный путь. |
Свойства |
|
Attributes |
Получает или задает атрибуты для текущего файла или каталога. Значение этого свойства представляет сочетание флагов атрибутов файла (из перечисления FileAttributes, таблица 11.6). |
CreationTime |
Получает или задает время создания текущего файла или каталога. |
Exists |
Получает значение (типа bool), показывающее, существует ли файл (true) или нет (false). |
Extension |
Получает строку, содержащую расширение файла. |
FullName |
Получает строку, содержащую полный путь к каталогу или файлу. |
LastAccessTime |
Получает или задает время последнего доступа к текущему файлу или каталогу. |
LastWriteTime |
Получает или задает время последней операции записи в текущий файл или каталог. |
Name |
Получает строку, содержащую имя текущего каталога (объекта DirectoryInfo). |
Parent |
Получает родительский каталог заданного подкаталога. |
Root |
Получает корневой элемент пути. |
Методы |
|
Create(); |
Создает новый каталог. |
CreateSubdirectory(sd); |
Создает один или несколько подкаталогов по заданному пути (sd, до 248 символов). Путь может быть задан относительно текущего объекта DirectoryInfo. |
Delete(); Delete(c); |
Удаляет каталог (текущий DirectoryInfo), если он пуст, или со всем содержимым (c = true). |
EnumerateDirectories(); EnumerateDirectories(tp); EnumerateDirectories (tp,op); |
Возвращает перечисляемую коллекцию сведений о каталогах в текущем каталоге, соответствующих указанному шаблону поиска (tp). Возможно, поиск ведется также и в подкаталогах (op): TopDirectoryOnly – поиск только в текущем каталоге (по умолчанию); AllDirectories – поиск в текущем каталоге и во всех подкаталогах. |
EnumerateFiles(); EnumerateFiles(tp); EnumerateFiles(tp,op); |
Возвращает перечисляемую коллекцию сведений о файлах в текущем каталоге, соответствующих шаблону поиска (tp). Возможно, поиск ведется также и в подкаталогах (op): TopDirectoryOnly – поиск только в текущем каталоге (по умолчанию); AllDirectories – поиск в текущем каталоге и во всех подкаталогах. |
EnumerateFileSystemInfos(); EnumerateFileSystemInfos (tp); EnumerateFileSystemInfos (tp,op); |
Возвращает перечисляемую коллекцию сведений о файлах и каталогах в текущем каталоге, соответствующих указанному шаблону поиска. Возможно, поиск ведется также и в подкаталогах (op): TopDirectoryOnly – поиск только в текущем каталоге (по умолчанию); AllDirectories – поиск в текущем каталоге и во всех подкаталогах. |
GetDirectories(); GetDirectories(tp); GetDirectories(tp,op); |
Возвращает массив каталогов (объектов DirectoryInfo) в текущем каталоге, соответствующих шаблону поиска (tp), с возможностью поиска и в подкаталогах (op): TopDirectoryOnly – поиск только в текущем каталоге (по умолчанию); AllDirectories – поиск в текущем каталоге и во всех подкаталогах. |
GetFiles(); GetFiles(tp); GetFiles(tp,op); |
Возвращает массив файлов (объектов FileInfo) в текущем каталоге, соответствующих шаблону поиска (tp), с возможностью поиска и в подкаталогах (op): TopDirectoryOnly – поиск только в текущем каталоге (по умолчанию); AllDirectories – поиск в текущем каталоге и во всех подкаталогах. |
GetFileSystemInfos(); GetFileSystemInfos(tp); GetFileSystemInfos(tp,op); |
Возвращает массив файлов и каталогов (объектов FileSystemInfo) в текущем каталоге, соответствующих шаблону поиска (tp) с возможностью поиска и в подкаталогах (op): TopDirectoryOnly – поиск только в текущем каталоге (по умолчанию); AllDirectories – поиск в текущем каталоге и во всех подкаталогах. |
MoveTo(sd2); |
Перемещает текущий каталог (объект DirectoryInfo) и его содержимое в новое место (sd2). |
Refresh(); |
Обновляет состояние объекта. Этот метод рекомендуется вызывать перед попыткой получения сведений об атрибутах, иначе сведения могут оказаться устаревшими. |
ToString(); |
Возвращает строку, содержащую исходный путь, переданный пользователем. |
Пример 11.12. Использование свойств Exists, Name и методов Create, CreateSubdirectory, GetDirectories, GetFiles, MoveTo, Delete класса DirectoryInfo для определения факта существования папок, создания, перемещения и удаления папок, а также вывода содержимого папки и подсчет папок и файлов в ней.
using System;
using System.IO;
class TestDirectoryInfo
{ static void Main(string[] args)
{ string currentDir = @"c:\temp";
string sourceDir = currentDir + @"\Source";
string destDir = currentDir + @"\Destination";
string moveDir = destDir + @"\Source";
// Объявление папок (объектов DirectoryInfo) для управления.
DirectoryInfo cd = new DirectoryInfo(currentDir);
DirectoryInfo sd = new DirectoryInfo(sourceDir);
DirectoryInfo dd = new DirectoryInfo(destDir);
DirectoryInfo md = new DirectoryInfo(moveDir);