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");
}
}