English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C# Уровень базовый

C# Уровень продвинутый

C# Ориентирован на объекты (OOP)

Файлы и каталоги в C#

C# предоставляет следующие классы для файловой системы. Они могут использоваться для доступа к каталогам, доступа к файлам, открытия файлов для чтения или записи, создания новых файлов или перемещения существующих файлов из одного места в другое и т.д.

Имя классаИспользование
FileFile - это статический класс, который предоставляет различные функции, такие как копирование, создание, перемещение, удаление, открытие для чтения или записи, шифрование или дешифрование, проверка наличия файла, добавление строк или текста в содержимое файла, получение времени последнего доступа и т.д.
FileInfoКласс FileInfo предоставляет такие же функции, как и статический класс File. Через ручное написание кода для чтения или записи байтов из файла вы можете лучше контролировать операции чтения/записи файла.
DirectoryКаталог - это статический класс, который предоставляет функции создания, перемещения, удаления и доступа к подкаталогам.  
DirectoryInfoDirectoryInfo предоставляет экземплярные методы для создания, перемещения, удаления и доступа к подкаталогам.  
PathPath - это статический класс, который предоставляет функции, такие как получение расширения файла, изменение расширения файла, получение абсолютного физического пути и другие функции, связанные с путями.

Файл(File)

C# включает статический класс File для выполнения i/o операций в физической файловой системе. Статический класс File включает различные полезные методы, которые могут взаимодействовать с любыми типами физических файлов (например, двоичными файлами, текстовыми файлами и т.д.).

Используйте статический класс File для выполнения некоторых быстрых операций с физическими файлами. Из-за причин производительности не рекомендуется использовать класс File для нескольких операций с несколькими файлами. В этом случае используйте класс FileInfo.

Важные статические методы класса File

МетодИспользование
ДобавитьAllLinesДобавить строку в файл и затем закрыть файл. Если указанный файл не существует, этот метод создаст файл,写入 указанную строку в файл и затем закроет файл.
ДобавитьAllTextОткрыть файл, добавить к нему указанную строку и затем закрыть файл. Если файл не существует, этот метод создаст файл,写入 указанную строку в файл и затем закроет файл.
ДобавитьTextСоздать StreamWriter, который будет добавлять текст, закодированный в UTF-8, к существующему файлу или к новому файлу, если указанный файл не существует.
КопироватьКопировать существующий файл в новый файл. Запрещается перезаписывать файлы с одинаковыми именами.
СоздатьСоздать или заменить файл в указанном пути.
СоздатьTextСоздать или открыть файл для записи текста, закодированного в UTF-8.
РасшифроватьРасшифровать файл, зашифрованный текущим аккаунтом, используя метод Encrypt.
УдалитьУдалить указанный файл.
ШифроватьШифровать файлы, чтобы только учетные записи, предназначенные для шифрования файлов, могли их расшифровать.
СуществуетОпределите, существует ли указанный файл.
GetAccessControlПолучите объект FileSecurity, который封装яет записи ACL (Access Control List) для указанного файла.
MoveПереместите указанный файл в новое положение и предоставьте возможность указать новое имя файла.
OpenОткройте FileStream на указанном пути с правами чтения/записи.
ReadAllBytesОткройте двоичный файл, прочитайте содержимое файла в массив байтов, затем закройте файл.
ReadAllLinesОткройте текстовый файл, прочитайте все строки файла, затем закройте файл.
ReadAllTextОткройте текстовый файл, прочитайте все строки файла, затем закройте файл.
ReplaceЗамените содержимое указанного файла содержимым другого файла, удалите исходный файл и создайте резервную копию замененного файла.
WriteAllBytesСоздайте новый файл, напишите в этот файл指定的 массив байтов, затем закройте файл. Если целевой файл уже существует, его заменят.
WriteAllLinesСоздайте новый файл, напишите в этот файл набор строк, затем закройте файл. Если целевой файл уже существует, его заменят.
WriteAllTextСоздайте новый файл, напишите指定的 строку в этот файл, затем закройте файл. Если целевой файл уже существует, его заменят.

Добавление текстовых строк

Используйте метод AppendAllLines () для добавления многострочного текста к указанному файлу, как показано ниже.

string dummyLines = "This is first line." + Environment.NewLine +
                    "This is second line." + Environment.NewLine +
                    "This is third line.";
//ОткрываемDummyFile.txt и добавляем строки. Если файл не существует, то создаем и открываем.
File.AppendAllLines(@"C:\DummyFile.txt", dummyLines.Split(Environment.NewLine.ToCharArray()).ToList<string>());

Добавление строки

Используйте метод File.AppendAllText () для добавления строки к файлу с одним строковым кодом, как показано ниже.

//ОткрываемDummyFile.txt и добавляем текст. Если файл не существует, то создаем и открываем.
File.AppendAllText(@"C:\ DummyFile.txt", "This is File testing");

записи текста

ИспользованиеFile.WriteAllText()Метод записывает текст в файл. Обратите внимание, что он не добавляет текст, но заменяет существующий текст.

    Пример:Overwriting existing text

//Открываем DummyFile.txt и пишем текст. Если файл не существует, создаем и открываем.
File.WriteAllText(@"C:\DummyFile.txt", "This is dummy text");

Ниже приведен пример того, как использовать статический класс File для выполнения различных операций.

//Проверка наличия файла в определенном положении
bool isFileExists = File.Exists(@"C:\ DummyFile.txt"); //Возвращает ложно
//Копирование DummyFile.txt в новый файл DummyFileNew.txt
File.Copy(@"C:\DummyFile.txt", @"D:\NewDummyFile.txt");
//Получение времени последнего доступа к файлу 
DateTime lastAccessTime = File.GetLastAccessTime(@"C:\DummyFile.txt");
//Получение времени последнего записи файла
DateTime lastWriteTime = File.GetLastWriteTime(@"C:\DummyFile.txt");
//Перемещение файла в новое положение
File.Move(@"C:\DummyFile.txt", @"D:\DummyFile.txt");
//Открываем файл и возвращаем FileStream для чтения байтов из файла
FileStream fs = File.Open(@"D:\DummyFile.txt", FileMode.OpenOrCreate);
//Открываем файл и возвращаем StreamReader для чтения строк из файла
StreamReader sr = File.OpenText(@"D:\DummyFile.txt");
    
//Удаление файла
File.Delete(@"C:\DummyFile.txt");

Таким образом, использование статического класса File легко обрабатывать физические файлы. Однако, если вам нужна большая гибкость, вы можете использовать класс FileInfo. Точно так же, использование статического класса Directory для обработки физических каталогов.

Следует запомнить основные моменты

  1. File является статическим классом, который можно использовать для чтения/записи физического файла с минимальным количеством кода.

  2. Статический класс File предоставляет такие функции, как создание, чтение/запись, копирование, перемещение, удаление физического файла.

  3. Статический класс Directory предоставляет такие функции, как создание, копирование, перемещение, удаление физического каталога, с минимальным количеством кода.

  4. Классы FileInfo и DirectoryInfo предоставляют такие же функции, как статические классы File и Directory.