Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.10.2014, 15:05   #1
L6go1as
Форумчанин
 
Регистрация: 20.10.2011
Сообщений: 433
По умолчанию Чтение множества файло

Добрый день.

Не подскажите как правильно читать большой объем файлов типа txt ?

Использую пока такую конструкцию:
Код:
for (int i = 0; i < 15000; i++)
{
using (StreamReader stream = new StreamReader(i + ".txt"))
{
ArrayData.Add(stream.ReadToEnd());
}
}
Файлы читает, но уж больно долго, а файлов много, в районе 15 000, но они все мелкие (по 30 кб).
L6go1as вне форума Ответить с цитированием
Старый 10.10.2014, 16:28   #2
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Ну 15000 файлов быстро и не прочтутся, накладных расходов на открытие/закрытие очень много
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Старый 10.10.2014, 17:03   #3
L6go1as
Форумчанин
 
Регистрация: 20.10.2011
Сообщений: 433
По умолчанию

Цитата:
Сообщение от Luuzuk Посмотреть сообщение
Ну 15000 файлов быстро и не прочтутся, накладных расходов на открытие/закрытие очень много
Хм, а если открыть один и собственно один раз закрыть ?
т.е. разом открываем файлы, читаем, и так же разом закрываем.

Ну или в многопотоке пустить ?
L6go1as вне форума Ответить с цитированием
Старый 10.10.2014, 17:45   #4
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

L6go1as

Не подскажите как правильно читать большой объем файлов типа txt ?

Ну или в многопотоке пустить ?

Ответ дан))

примерно так

Код:
async Task<string> Read(int i)
{
	using (var rd = new StreamReader(i + ".txt"))
	{
		return await rd.ReadToEndAsync();
	}
}

async Task<string> ReadAll()
{
	var sb = new StringBuilder();
	for (var i = 0; i < 15000; i++)
		sb.AppendLine(await Read(i));
	return sb.ToString();
}

var result = ReadAll().Result;
Rififi вне форума Ответить с цитированием
Старый 10.10.2014, 17:54   #5
L6go1as
Форумчанин
 
Регистрация: 20.10.2011
Сообщений: 433
По умолчанию

Спасиб за подсказку! Скорей бы домой попробовать.

А вот такой вопрос бывалым, как лучше хранить большие объемы данных ?
В тьме маленьких файлов (как сча у меня) или в одном но сцуко массивном ? )

Последний раз редактировалось Stilet; 11.10.2014 в 12:28.
L6go1as вне форума Ответить с цитированием
Старый 11.10.2014, 15:49   #6
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Цитата:
Сообщение от L6go1as Посмотреть сообщение
Спасиб за подсказку! Скорей бы домой попробовать.

А вот такой вопрос бывалым, как лучше хранить большие объемы данных ?
В тьме маленьких файлов (как сча у меня) или в одном но сцуко массивном ? )
В БД. Postgres, например
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Pascal ABC. Множества. Сформировать два множества из M и N элементов случайным образом. powersej Помощь студентам 0 13.12.2012 20:58
Открытие файло .cpp Foplik C++ Builder 6 03.06.2012 17:28
Скачивание файло из интернета Mihanches Работа с сетью в Delphi 4 13.10.2010 15:11
Как узнать список файло и папок на ФТПв неактивном каталоге? Slavka8800 Работа с сетью в Delphi 2 21.05.2009 08:58
PCI. Чтение множества данных подряд Min Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 07.04.2009 03:40