123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393 |
- ## Работа с дисками
- using System;
- using System.IO;
- DriveInfo[] drives = DriveInfo.GetDrives();
- foreach (DriveInfo drive in drives)
- {
- Console.WriteLine($"Название: {drive.Name}");
- Console.WriteLine($"Тип: {drive.DriveType}");
- if (drive.IsReady)
- {
- Console.WriteLine($"Объем диска: {drive.TotalSize}");
- Console.WriteLine($"Свободное пространство: {drive.TotalFreeSpace}");
- Console.WriteLine($"Метка: {drive.VolumeLabel}");
- }
- Console.WriteLine();
- }
- ## Работа с каталогами
- string dirName = "C:\\";
- if (Directory.Exists(dirName))
- {
- Console.WriteLine("Подкаталоги:");
- string[] dirs = Directory.GetDirectories(dirName);
- foreach (string s in dirs)
- {
- Console.WriteLine(s);
- }
- Console.WriteLine();
- Console.WriteLine("Файлы:");
- string[] files = Directory.GetFiles(dirName);
- foreach (string s in files)
- {
- Console.WriteLine(s);
- }
- }
- ### Создание каталога
- string path = @"C:\SomeDir";
- string subpath = @"program\avalon";
- DirectoryInfo dirInfo = new DirectoryInfo(path);
- if (!dirInfo.Exists)
- {
- dirInfo.Create();
- }
- dirInfo.CreateSubdirectory(subpath);
- ### Получение информации о каталоге
- string dirName = "C:\\Program Files";
- DirectoryInfo dirInfo = new DirectoryInfo(dirName);
- Console.WriteLine($"Название каталога: {dirInfo.Name}");
- Console.WriteLine($"Полное название каталога: {dirInfo.FullName}");
- Console.WriteLine($"Время создания каталога: {dirInfo.CreationTime}");
- Console.WriteLine($"Корневой каталог: {dirInfo.Root}");
- ### Удаление каталога
- string dirName = @"C:\SomeFolder";
- try
- {
- DirectoryInfo dirInfo = new DirectoryInfo(dirName);
- dirInfo.Delete(true);
- Console.WriteLine("Каталог удален");
- }
- catch (Exception ex)
- {
- Console.WriteLine(ex.Message);
- }
- ### Перемещение каталога
- string oldPath = @"C:\SomeFolder";
- string newPath = @"C:\SomeDir";
- DirectoryInfo dirInfo = new DirectoryInfo(oldPath);
- if (dirInfo.Exists && Directory.Exists(newPath) == false)
- {
- dirInfo.MoveTo(newPath);
- }
- ## Работа с файлами. Классы File и FileInfo
- ### Получение информации о файле
- string path = @"C:\apache\hta.txt";
- FileInfo fileInf = new FileInfo(path);
- if (fileInf.Exists)
- {
- Console.WriteLine("Имя файла: {0}", fileInf.Name);
- Console.WriteLine("Время создания: {0}", fileInf.CreationTime);
- Console.WriteLine("Размер: {0}", fileInf.Length);
- }
- ```
- ### Удаление файла
- string path = @"C:\apache\hta.txt";
- FileInfo fileInf = new FileInfo(path);
- if (fileInf.Exists)
- {
- fileInf.Delete();
- // альтернатива с помощью класса File
- // File.Delete(path);
- }
- ```
- ### Перемещение файла
- string path = @"C:\apache\hta.txt";
- string newPath = @"C:\SomeDir\hta.txt";
- FileInfo fileInf = new FileInfo(path);
- if (fileInf.Exists)
- {
- fileInf.MoveTo(newPath);
- // альтернатива с помощью класса File
- // File.Move(path, newPath);
- }
- ### Копирование файла
- string path = @"C:\apache\hta.txt";
- string newPath = @"C:\SomeDir\hta.txt";
- FileInfo fileInf = new FileInfo(path);
- if (fileInf.Exists)
- {
- fileInf.CopyTo(newPath, true);
- // альтернатива с помощью класса File
- // File.Copy(path, newPath, true);
- }
- # FileStream. Чтение и запись файла
- ### Чтение и запись файлов
- using System;
- using System.IO;
-
- namespace HelloApp
- {
- class Program
- {
- static void Main(string[] args)
- {
- // создаем каталог для файла
- string path = @"C:\SomeDir2";
- DirectoryInfo dirInfo = new DirectoryInfo(path);
- if (!dirInfo.Exists)
- {
- dirInfo.Create();
- }
- Console.WriteLine("Введите строку для записи в файл:");
- string text = Console.ReadLine();
- // запись в файл
- using (FileStream fstream = new FileStream($"{path}\note.txt", FileMode.OpenOrCreate))
- {
- // преобразуем строку в байты
- byte[] array = System.Text.Encoding.Default.GetBytes(text);
- // запись массива байтов в файл
- fstream.Write(array, 0, array.Length);
- Console.WriteLine("Текст записан в файл");
- }
- // чтение из файла
- using (FileStream fstream = File.OpenRead($"{path}\note.txt"))
- {
- // преобразуем строку в байты
- byte[] array = new byte[fstream.Length];
- // считываем данные
- fstream.Read(array, 0, array.Length);
- // декодируем байты в строку
- string textFromFile = System.Text.Encoding.Default.GetString(array);
- Console.WriteLine($"Текст из файла: {textFromFile}");
- }
- Console.ReadLine();
- }
- }
- }
- Unhandled exception. System.IO.IOException: Синтаксическая ошибка в имени файла, имени папки или метке тома. : 'C:\SomeDir3
- ote.txt'
- at Microsoft.Win32.SafeHandles.SafeFileHandle.CreateFile(String fullPath, FileMode mode, FileAccess access, FileShare share, FileOptions options)
- at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String fullPath, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize, Nullable`1 un
- ixCreateMode)
- at System.IO.Strategies.OSFileStreamStrategy..ctor(String path, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize, Nullable`1 unixCr
- eateMode)
- at System.IO.Strategies.FileStreamHelpers.ChooseStrategyCore(String path, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize, Nullabl
- e`1 unixCreateMode)
- at System.IO.FileStream..ctor(String path, FileMode mode)
- at HelloApp.Program.Main(String[] args) in C: \Users\Neptu\RiderProjects\kapralov12\kapralov12\Program.cs:line 22
- at HelloApp.Program.<Main>(String[] args)
- ### Запись в файл и StreamWriter
- using System;
- using System.IO;
-
- namespace HelloApp
- {
- class Program
- {
- static void Main(string[] args)
- {
- string writePath = @"C:\SomeDir\hta.txt";
- string text = "Привет мир!\nПока мир...";
- try
- {
- using (StreamWriter sw = new StreamWriter(
- writePath, false, System.Text.Encoding.Default))
- {
- sw.WriteLine(text);
- }
- using (StreamWriter sw = new StreamWriter(
- writePath, true, System.Text.Encoding.Default))
- {
- sw.WriteLine("Дозапись");
- sw.Write(4.5);
- }
- Console.WriteLine("Запись выполнена");
- }
- catch (Exception e)
- {
- Console.WriteLine(e.Message);
- }
- }
- }
- }
- Запись выполнена
- ### Чтение из файла и StreamReader
- using System;
- using System.IO;
- using System.Threading.Tasks;
-
- string path = @"C:\SomeDir\hta.txt";
- try
- {
- using (StreamReader sr = new StreamReader(path))
- {
- Console.WriteLine(sr.ReadToEnd());
- }
- // асинхронное чтение
- using (StreamReader sr = new StreamReader(path))
- {
- Console.WriteLine(await sr.ReadToEndAsync());
- }
- }
- catch (Exception e)
- {
- Console.WriteLine(e.Message);
- }
- ## Бинарные файлы. BinaryWriter и BinaryReader
- struct State
- {
- public string name;
- public string capital;
- public int area;
- public double people;
- public State(string n, string c, int a, double p)
- {
- name = n;
- capital = c;
- people = p;
- area = a;
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- State[] states = new State[2];
- states[0] = new State("Германия", "Берлин", 357168, 80.8);
- states[1] = new State("Франция", "Париж", 640679, 64.7);
- string path = @"C:\SomeDir\states.dat";
- try
- {
- // создаем объект BinaryWriter
- using (BinaryWriter writer = new BinaryWriter(File.Open(path, FileMode.OpenOrCreate)))
- {
- // записываем в файл значение каждого поля структуры
- foreach (State s in states)
- {
- writer.Write(s.name);
- writer.Write(s.capital);
- writer.Write(s.area);
- writer.Write(s.people);
- }
- }
- // создаем объект BinaryReader
- using (BinaryReader reader = new BinaryReader(File.Open(path, FileMode.Open)))
- {
- // пока не достигнут конец файла
- // считываем каждое значение из файла
- while (reader.PeekChar() > -1)
- {
- string name = reader.ReadString();
- string capital = reader.ReadString();
- int area = reader.ReadInt32();
- double population = reader.ReadDouble();
- Console.WriteLine("Страна: {0} столица: {1} площадь {2} кв. км численность населения: {3} млн. чел.",
- name, capital, area, population);
- }
- }
- }
- catch (Exception e)
- {
- Console.WriteLine(e.Message);
- }
- Console.ReadLine();
- }
- }
- ## Бинарная сериализация. BinaryFormatter
- # Атрибут Serializable
- using System;
- using System.IO;
- using System.Runtime.Serialization.Formatters.Binary;
-
- namespace Serialization
- {
- [Serializable]
- class Person
- {
- public string Name { get; set; }
- public int Age { get; set; }
- public Person(string name, int age)
- {
- Name = name;
- Age = age;
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- // объект для сериализации
- Person person = new Person("Tom", 29);
- Console.WriteLine("Объект создан");
- // создаем объект BinaryFormatter
- BinaryFormatter formatter = new BinaryFormatter();
- // получаем поток, куда будем записывать сериализованный объект
- using (FileStream fs = new FileStream("people.dat", FileMode.OpenOrCreate))
- {
- formatter.Serialize(fs, person);
- Console.WriteLine("Объект сериализован");
- }
- // десериализация из файла people.dat
- using (FileStream fs = new FileStream("people.dat", FileMode.OpenOrCreate))
- {
- Person newPerson = (Person)formatter.Deserialize(fs);
- Console.WriteLine("Объект десериализован");
- Console.WriteLine($"Имя: {newPerson.Name} --- Возраст: {newPerson.Age}");
- }
- Console.ReadLine();
- }
- }
- }
|