Работа с файлами в C#
Чтение файла
Прочитать данные из файла можно несколькими способами:
- File.ReadAllText(@»D:\myfile.txt») — вернет содержимое файла одной строкой.
- File.ReadAllLines(@»D:\myfile.txt») — содержимое файла в виде массива строк.
- File.ReadAllBytes(@»D:\myfile.txt») — содержимое файла в виде массива байт.
Запись в текстовый файл
Вызов
System.IO.File.AppendAllText(@"D:\myfile.txt", "new line")
запишет в файл переданный текст. Если файл с заданным именем не существует — он будет создан.
XML сериализация
В C# есть встроенные возможности для сохранения объектов в XML и загрузки из XML. Сохраняются при это только свойства. Значения полей сохраняться не будут.
Создаем класс, экземпляры которого будем сохранять и загружать:
public class Animal { public string Name { get; set; } }
Теперь нам нужны 2 метода, для сохранения и загрузки:
public static void SerializeObjectToFile<T>(T serializingObject, string path) { XmlSerializer writer = new XmlSerializer(typeof(T)); using (StreamWriter file = new StreamWriter(path)) { writer.Serialize(file, serializingObject); } } public static T DeserializeObjectFromFile<T>(string path) { using (StreamReader file = new StreamReader(path)) { XmlSerializer reader = new XmlSerializer(typeof(T)); return (T)reader.Deserialize(file); } }
Проверяем:
var cat = new Animal(); cat.Name = "Garfield"; SerializeObjectToFile(cat, @"D:\cat.txt"); var newCat = DeserializeObjectFromFile<Animal>(@"D:\cat.txt"); Console.WriteLine(newCat.Name);
Содержимое файла D:\cat.txt:
<?xml version="1.0" encoding="utf-8"?> <Animal xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <Name>Garfield</Name> </Animal>
Архивация файлов в C#
Начиная с версии 4.5 в .Net Framework появились классы для работы с zip архивами. Для их использования нужно подключить к проекту сборку System.IO.Compression.FileSystem.
Создать zip архив очень просто:
ZipFile.CreateFromDirectory(@"D:\cat", @"D:\cat.zip");
Первым аргументом передается путь к папке, содержимое которой архивируется. Вторым — имя архива.
Распаковать архив тоже не сложно:
ZipFile.ExtractToDirectory(@"D:\cat.zip", @"D:\cat1");
Первый аргумент — путь к архиву, второй — путь к папке, в которую будет распакован архив.