Загрузка данных


using System;
using System.IO;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        // Создаём тестовые файлы, если их нет
        if (!File.Exists("text1.txt")) File.WriteAllText("text1.txt", "Привет из файла!");
        if (!File.Exists("file1.txt")) File.WriteAllText("file1.txt", "Первый файл");
        if (!File.Exists("file2.txt")) File.WriteAllText("file2.txt", "Второй файл");
        if (!File.Exists("file3.txt")) File.WriteAllText("file3.txt", "Третий файл");
        if (!File.Exists("data.txt")) File.WriteAllText("data.txt", "hello world");

        // Задание 1. Асинхронное чтение
        Task<string> chtenie = File.ReadAllTextAsync("text1.txt");
        Console.WriteLine("Основной поток: выполняю другие дела...");
        string soderzhimoe = await chtenie;
        Console.WriteLine($"Прочитано: {soderzhimoe}\n");

        // Задание 2. Асинхронная запись
        Task zapis = File.WriteAllTextAsync("output.txt", "Новая строка");
        for (int i = 1; i <= 3; i++)
        {
            Console.WriteLine($"Основной поток: статус операции {i}");
            await Task.Delay(100);
        }
        await zapis;
        Console.WriteLine("Запись завершена\n");

        // Задание 3. Чтение нескольких файлов параллельно
        Task<string> t1 = File.ReadAllTextAsync("file1.txt");
        Task<string> t2 = File.ReadAllTextAsync("file2.txt");
        Task<string> t3 = File.ReadAllTextAsync("file3.txt");
        await Task.WhenAll(t1, t2, t3);
        Console.WriteLine("Содержимое файлов:");
        Console.WriteLine($"file1.txt: {t1.Result}");
        Console.WriteLine($"file2.txt: {t2.Result}");
        Console.WriteLine($"file3.txt: {t3.Result}\n");

        // Задание 4. Цепочка: чтение → обработка → запись
        string tekst = await File.ReadAllTextAsync("data.txt");
        string obrabotannyj = tekst.ToUpper();
        await File.WriteAllTextAsync("result.txt", obrabotannyj);
        Console.WriteLine("Готово: data.txt -> обработка (ToUpper) -> result.txt");
    }
}