
- •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 (Directory.Exists(currentDir)) // Если папка существует
{ // Создание папок и файлов
Directory.CreateDirectory(sourceDir); // Созание
Directory.CreateDirectory(sourceDir + @"\Dir"); // новых
Directory.CreateDirectory(destDir); // папок
StreamWriter f1 = File.CreateText(sourceDir +
@"\Test1.txt"); // Созание файла
f1.WriteLine("Test 1"); // Запись в файл
f1.Close(); // Закрытие файла
StreamWriter f2 = File.CreateText(sourceDir +
@"\Test2.txt"); // Созание файла
f2.WriteLine("Test 2"); // Запись в файл
f2.Close(); // Закрытие файла
Console.WriteLine("Папки и файлы созданы.");
}
Console.ReadLine();
// Вывод содержимого папки и подсчет папок и файлов в ней
Console.WriteLine("Содержимое папки {0} :", sourceDir);
foreach (string fName in Directory.GetDirectories(sourceDir))
Console.WriteLine(" {0}\t\t<папка>", fName);
foreach (string fName in Directory.GetFiles(sourceDir))
Console.WriteLine(" {0}", fName);
Console.WriteLine("Итого: {0} папок и {1} файлов.",
Directory.GetDirectories(sourceDir).Length,
Directory.GetFiles(sourceDir).Length);
Console.ReadLine();
If (Directory.Exists(sourceDir) & Directory.Exists(destDir) &
!Directory.Exists(moveDir))
{ Directory.Move(sourceDir, moveDir); // Перемещение папки
Console.WriteLine("Папка {0} перемещена в {1} .",
sourceDir, moveDir);
}
Console.ReadLine();
If (Directory.Exists(destDir)) // Если папка существует
{ Directory.Delete(destDir, true); // Удаление папки
Console.WriteLine("Папка {0} со всем содержимым удалена.",
destDir);
}
Console.ReadLine();
}
}
/* Вывод:
Папки и файлы созданы.
Содержимое папки c:\temp\Source :
c:\temp\Source\Dir <папка>
c:\temp\Source\Test1.txt
c:\temp\Source\Test2.txt
Итого: 1 папок и 2 файлов.
Папка c:\temp\Source перемещена в c:\temp\Destination\Source .
Папка c:\temp\Destination со всем содержимым удалена.
*/
11.5. Использование класса System.Io.Path для работы со строкой пути к папке или файлу
(http://msdn.microsoft.com/ru-ru/library/system.io.path.aspx)
Таблица 11.10. Основные поля и методы класса Path из пространства имен System.IO
Имя |
Описание |
Поля |
|
AltDirectorySeparatorChar |
Возвращает дополнительный символ, задавае-мый платформой, для разделения уровней каталогов в строке пути, в которой отражена иерархическая организация файловой системы. В операционной системе Windows значением этого поля является знак косой черты (/). |
DirectorySeparatorChar |
Возвращает символ, задаваемый платформой, для разделения уровней папок в строке пути, в которой отражена иерархическая организация файловой системы. В операционной системе Windows значением этого поля является знак обратной косой черты (\). |
PathSeparator |
Возвращает разделитель, задаваемый платфор-мой, который используется в переменных среды для разделения строк пути. В операционной системе Windows значением этого поля является знак точки с запятой (;). |
VolumeSeparatorChar |
Возвращает разделитель томов, задаваемый платформой. В операционной системе Windows значением поля является знак двоеточия (:). |
Методы |
|
ChangeExtension(path,ext); |
Изменяет расширение (ext) в строке пути (path). |
Combine(sp1,sp2); Combine(sp1,sp2,sp3); Combine(sp1,sp2,sp3,sp4); Combine(sPath); |
Объединяет несколько строк (sp1-sp4) или массив строк (sPath) в строку пути. |
GetDirectoryName(sp); |
Возвращает для указанной строки пути (sp) имя каталога или значение null, если путь указывает на корневой каталог или пуст. |
GetExtension(sp); |
Возвращает расширение файла в указанной строке пути (sp). |
GetFileName(sp); |
Возвращает имя файла и его расширение для указанной строки пути (sp). |
GetFileNameWithoutExtension(sp); |
Возвращает имя файла без расширения для указанной строки пути (sp). |
GetFullPath(sp); |
Возвращает для указанной строки пути (sp) абсолютный путь. |
GetInvalidFileNameChars(); |
Возвращает массив, содержащий символы, которые не разрешены в именах файлов. |
GetInvalidPathChars(); |
Возвращает массив, содержащий символы, которые не разрешены в строке пути. |
GetPathRoot(sp); |
Возвращает для указанного пути (sp) сведения о корневом каталоге. |
GetRandomFileName(); |
Возвращает произвольное имя каталога или файла. |
GetTempFileName(); |
Создает на диске временный пустой файл с уникальным именем и возвращает полный путь для этого файла. |
GetTempPath(); |
Возвращает путь к временной папке текущего пользователя, заканчивающийся обратной косой чертой (\). |
HasExtension(sp); |
Определяет, включает ли строка пути (sp) расширение имени файла. |
IsPathRooted(sp); |
Определяет, содержит ли строка пути (sp) корень. Значение true возвращается, если первый символ строки пути является разделителем каталога (например, "\") или если путь начинается с буквы диска и двоеточия (:). |
Пример 11.10. Использование методов класса Path для получения информации о строке пути к папке или файлу.
using System;
using System.IO;
class TestPath
{ public static void Main()
{ string path1 = @"c:\temp\MyTest.txt";
string path2 = @"c:\temp\MyTest";
string path3 = @"temp";
string result;
result = Path.ChangeExtension(path1, ".dat");
Console.WriteLine("В пути '{0}' расширение изменено на '{1}'.",
path1, result);
Console.WriteLine("Файл '{0}' находится в папке '{1}'.",
Path.GetFileName(path1),
Path.GetDirectoryName(path1));