Sen descrición

ebakhtin 1c51c05c28 first hai 8 meses
test123 1c51c05c28 first hai 8 meses
Program.cs 1c51c05c28 first hai 8 meses
lab5_files.csproj 1c51c05c28 first hai 8 meses
lab5_files.sln 1c51c05c28 first hai 8 meses
readme.md 1c51c05c28 first hai 8 meses

readme.md

Получение имен и свойств всех дисков на компьютере

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();
}
Название: C:\
Тип: Fixed                        
Объем диска: 104857595904         
Свободное пространство: 6736568320
Метка:                            
                                  
Название: D:\                     
Тип: Fixed                        
Объем диска: 268386168832
Свободное пространство: 105847291904
Метка: HDD

Название: F:\
Тип: Fixed
Объем диска: 731814817792
Свободное пространство: 563444760576
Метка:

Название: G:\
Тип: Removable

Название: V:\
Тип: Fixed
Объем диска: 61147705344
Свободное пространство: 10481795072
Метка: SSD

Название: Z:\
Тип: Fixed
Объем диска: 73381441536
Свободное пространство: 12910157824
Метка: SSD


Process finished with exit code 0.

Получение списка файлов и подкаталогов

string dirName = "C:\\Users\\jissxdd\\Desktop\\labs\\lab5_files\\test123";
 
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);
    }
}
Подкаталоги:
C:\Users\jissxdd\Desktop\labs\lab5_files\test123\test1  
C:\Users\jissxdd\Desktop\labs\lab5_files\test123\test2  
                                                        
Файлы:                                                  
C:\Users\jissxdd\Desktop\labs\lab5_files\test123\123.txt

Process finished with exit code 0.

Создание каталога

string path = @"C:\Users\jissxdd\Desktop\labs\lab5_files\test123";
string subpath = @"program\avalon";
DirectoryInfo dirInfo = new DirectoryInfo(path);
if (!dirInfo.Exists)
{
    dirInfo.Create();
}
dirInfo.CreateSubdirectory(subpath);

Получение информации о каталоге

string dirName = @"C:\Users\jissxdd\Desktop\labs\lab5_files\test123";
 
DirectoryInfo dirInfo = new DirectoryInfo(dirName);
 
Console.WriteLine($"Название каталога: {dirInfo.Name}");
Console.WriteLine($"Полное название каталога: {dirInfo.FullName}");
Console.WriteLine($"Время создания каталога: {dirInfo.CreationTime}");
Console.WriteLine($"Корневой каталог: {dirInfo.Root}");
Название каталога: test123
Полное название каталога: C:\Users\jissxdd\Desktop\labs\lab5_files\test123
Время создания каталога: 16.03.2024 20:46:33                              
Корневой каталог: C:\   

Удаление каталога

string dirName = @"C:\Users\jissxdd\Desktop\labs\lab5_files\test123\program";
 
try
{
    DirectoryInfo dirInfo = new DirectoryInfo(dirName);
    dirInfo.Delete(true);
    Console.WriteLine("Каталог удален");
}
catch (Exception ex)
{
    Console.WriteLine(ex.Message);
}
Каталог удален

Process finished with exit code 0.

Перемещение каталога

string oldPath = @"C:\Users\jissxdd\Desktop\labs\lab5_files\test123\test1";
string newPath = @"C:\Users\jissxdd\Desktop\labs\lab5_files\testest";
DirectoryInfo dirInfo = new DirectoryInfo(oldPath);
if (dirInfo.Exists && Directory.Exists(newPath) == false)
{
    dirInfo.MoveTo(newPath);
}
Process finished with exit code 0.

Получение информации о файле

string path = @"C:\Users\jissxdd\Desktop\labs\lab5_files\test123\123.txt";
FileInfo fileInf = new FileInfo(path);
if (fileInf.Exists)
{
    Console.WriteLine("Имя файла: {0}", fileInf.Name);
    Console.WriteLine("Время создания: {0}", fileInf.CreationTime);
    Console.WriteLine("Размер: {0}", fileInf.Length);
}
Имя файла: 123.txt
Время создания: 16.03.2024 20:46:44
Размер: 9                          

Process finished with exit code 0.

Удаление файла

string path = @"C:\Users\jissxdd\Desktop\labs\lab5_files\test123\123.txt";
FileInfo fileInf = new FileInfo(path);
if (fileInf.Exists)
{
    fileInf.Delete();
    // альтернатива с помощью класса File
    // File.Delete(path);
}
Process finished with exit code 0.

Перемещение файла

string path = @"C:\Users\jissxdd\Desktop\labs\lab5_files\test123\123.txt";
string newPath = @"C:\Users\jissxdd\Desktop\labs\lab5_files\test123\test2\123.txt";
FileInfo fileInf = new FileInfo(path);
if (fileInf.Exists)
{
    fileInf.MoveTo(newPath);       
    // альтернатива с помощью класса File
    // File.Move(path, newPath);
}
Process finished with exit code 0.

Копирование файла

string path = @"C:\Users\jissxdd\Desktop\labs\lab5_files\test123\test2\123.txt";
string newPath = @"C:\Users\jissxdd\Desktop\labs\lab5_files\test123\123.txt";
FileInfo fileInf = new FileInfo(path);
if (fileInf.Exists)
{
    fileInf.CopyTo(newPath, true);      
    // альтернатива с помощью класса File
    // File.Copy(path, newPath, true);
}
Process finished with exit code 0.

Считывание-запись в текстовый файл

using System;
using System.IO;
 
namespace HelloApp
{
    class Program
    {
        static void Main(string[] args)
        {
            // создаем каталог для файла
            string path = @"F:\aaa";
            DirectoryInfo dirInfo = new DirectoryInfo(path);
            if (!dirInfo.Exists)
            {
                dirInfo.Create();
            }
            Console.WriteLine("Введите строку для записи в файл:");
            string text = Console.ReadLine();
 
            // запись в файл
            using (FileStream fstream = new FileStream($@"F:\aaa\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(@$"F:\aaa\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();
        }
    }
}
Введите строку для записи в файл:
123
Текст записан в файл
Текст из файла: 123 

Считывание-запись в текстовый файл с использованием асинхронных методов

using System;
using System.IO;
using System.Threading.Tasks;
 
namespace HelloApp
{
    class Program
    {
        static async Task Main(string[] args)
        {
            // создаем каталог для файла
            string path = @$"F:\aaa";
            DirectoryInfo dirInfo = new DirectoryInfo(path);
            if (!dirInfo.Exists)
            {
                dirInfo.Create();
            }
            Console.WriteLine("Введите строку для записи в файл:");
            string text = Console.ReadLine();
 
            // запись в файл
            using (FileStream fstream = new FileStream(@$"F:\aaa\note.txt", FileMode.OpenOrCreate))
            {
                byte[] array = System.Text.Encoding.Default.GetBytes(text);
                // асинхронная запись массива байтов в файл
                await fstream.WriteAsync(array, 0, array.Length);
                Console.WriteLine("Текст записан в файл");
            }
 
            // чтение из файла
            using (FileStream fstream = File.OpenRead(@$"F:\aaa\note.txt"))
            {
                byte[] array = new byte[fstream.Length];
                // асинхронное чтение файла
                await fstream.ReadAsync(array, 0, array.Length);
 
                string textFromFile = System.Text.Encoding.Default.GetString(array);
                Console.WriteLine($"Текст из файла: {textFromFile}");
            }
 
            Console.ReadLine();
        }
    }
}
Введите строку для записи в файл:
123
Текст записан в файл
Текст из файла: 123 

Произвольный доступ к файлам

using System.IO;
using System.Text;
 
class Program
{
    static void Main(string[] args)
    {
        string text = "hello world";
             
        // запись в файл
        using (FileStream fstream = new FileStream(@"C:\Users\jissxdd\Desktop\labs\lab5_files\test123\123.dat", FileMode.OpenOrCreate))
        {
            // преобразуем строку в байты
            byte[] input = Encoding.Default.GetBytes(text);
            // запись массива байтов в файл
            fstream.Write(input, 0, input.Length);
            Console.WriteLine("Текст записан в файл");
 
            // перемещаем указатель в конец файла, до конца файла- пять байт
            fstream.Seek(-5, SeekOrigin.End); // минус 5 символов с конца потока
 
            // считываем четыре символов с текущей позиции
            byte[] output = new byte[4];
            fstream.Read(output, 0, output.Length);
            // декодируем байты в строку
            string textFromFile = Encoding.Default.GetString(output);
            Console.WriteLine($"Текст из файла: {textFromFile}"); // worl
 
            // заменим в файле слово world на слово house
            string replaceText = "house";
            fstream.Seek(-5, SeekOrigin.End); // минус 5 символов с конца потока
            input = Encoding.Default.GetBytes(replaceText);
            fstream.Write(input, 0, input.Length);
 
            // считываем весь файл
            // возвращаем указатель в начало файла
            fstream.Seek(0, SeekOrigin.Begin);
            output = new byte[fstream.Length];
            fstream.Read(output, 0, output.Length);
            // декодируем байты в строку
            textFromFile = Encoding.Default.GetString(output);
            Console.WriteLine($"Текст из файла: {textFromFile}"); // hello house
        }
        Console.Read();
    }
}
Текст записан в файл
Текст из файла: worl       
Текст из файла: hello house

Закрытие потока

FileStream fstream = null;
try
{
    fstream = new FileStream(@"C:\Users\jissxdd\Desktop\labs\lab5_files\test123\123.dat", FileMode.OpenOrCreate);
    // операции с потоком
}
catch(Exception ex)
{
 
}
finally
{
    if (fstream != null)
        fstream.Close();
}
Process finished with exit code 0.

Запись в файл

using System;
using System.IO;
 
namespace HelloApp
{
    class Program
    {
        static void Main(string[] args)
        {
            string writePath = @"C:\Users\jissxdd\Desktop\labs\lab5_files\test123\123.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);
            }
        }
    }
}
Запись выполнена

Запись в файл с использованием асинхронных методов

using System;
using System.IO;
using System.Threading.Tasks;
 
namespace HelloApp
{
    class Program
    {
        static async Task Main(string[] args)
        {
            string writePath = @"C:\Users\jissxdd\Desktop\labs\lab5_files\test123\123.txt";
 
            string text = "Привет мир!\nПока мир...";
            try
            {
                using (StreamWriter sw = new StreamWriter(
                           writePath, false, System.Text.Encoding.Default))
                {
                    await sw.WriteLineAsync(text);
                }
 
                using (StreamWriter sw = new StreamWriter(
                           writePath, true, System.Text.Encoding.Default))
                {
                    await sw.WriteLineAsync("Дозапись");
                    await sw.WriteAsync("4,5");
                }
                Console.WriteLine("Запись выполнена");
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
    }
}
Запись выполнена

Считаем текст полностью из ранее записанного файла

string path = @"C:\Users\jissxdd\Desktop\labs\lab5_files\test123\123.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);
}
Привет мир!
Пока мир...
Дозапись   
4,5        
Привет мир!
Пока мир...
Дозапись   
4,5       

Считаем текст из файла построчно

string path= @"C:\Users\jissxdd\Desktop\labs\lab5_files\test123\123.txt";
   
using (StreamReader sr = new StreamReader(path, System.Text.Encoding.Default))
{
    string line;
    while ((line = sr.ReadLine()) != null)
    {
        Console.WriteLine(line);
    }
}
// асинхронное чтение
using (StreamReader sr = new StreamReader(path, System.Text.Encoding.Default))
{
    string line;
    while ((line = await sr.ReadLineAsync()) != null)
    {
        Console.WriteLine(line);
    }
}
Привет мир!
Пока мир...
Дозапись   
4,5        
Привет мир!
Пока мир...
Дозапись   
4,5       

Бинарные файлы. 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:\Users\jissxdd\Desktop\labs\lab5_files\test123\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();
    }
}
Страна: Германия  столица: Берлин  площадь 357168 кв. км   численность населения: 80,8 млн. чел.
Страна: Франция  столица: Париж  площадь 640679 кв. км   численность населения: 64,7 млн. чел.