Как брать случайную строку из разных файлов, не создавая кучи списков?

toxass

Client
Регистрация
18.03.2010
Сообщения
280
Благодарностей
12
Баллы
18
Есть N файлов в определенной папке, в каждом файле разное количество строк.

Необходимо случайным образом из каждого файла брать по 1 строке, при этом не создавая тучи списков, так как файлов может быть как 10 так и 300, а затем все случайные строки соединить в 1 текстовый файл.

Удалять и добавлять в файлы ничего не нужно.
 

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 268
Баллы
113
В директиву using не забудь добавить using System.IO;
C#:
List<string> result = new List<string>();
Random rnd= new Random();
var files = Directory.GetFiles("D:\\testDir"); // Получаем файлы из директории

for (int i = 0; i < files.Count(); i++)
{
    var data = File.ReadAllLines(files[i]); // считываем данные из текста
    result.Add(data[rnd.Next(0, data.Count())]); // добавляем рандомную строку в список
}
File.WriteAllLines("rezultat.txt", result);
 
  • Спасибо
Реакции: ks1989, one и toxass

toxass

Client
Регистрация
18.03.2010
Сообщения
280
Благодарностей
12
Баллы
18
Radzhab, а в переменную результат можно как-то вывести?
 

shifu

Client
Регистрация
04.04.2011
Сообщения
168
Благодарностей
23
Баллы
18
Вот еще вариант если не разбираешься в программировании
https://help.zennolab.com/ru/v3/zennoposter/ -> Макросы -> Файлы и директории -> Взять строку из файла
 

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 268
Баллы
113
  1. File.WriteAllLines("rezultat.txt", result);
Вместо этого кода сделай
var rez = string.Join("\n",result);
return rez;
 
  • Спасибо
Реакции: toxass

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)