Я анализирую большие CSV-файлы - около 500 мегабайт (много строк, много столбцов). Мне нужны только первые два столбца (так что до второй запятой в каждой строке). Кроме того, нескольким потокам требуется доступ к этому файлу одновременно, поэтому я не могу получить эксклюзивную блокировку.
Какой самый быстрый / наименее потребляющий память подход к этой проблеме? На какие классы / методы я должен смотреть? Я предполагаю, что я должен оставаться как можно более низкого уровня - читать символ за символом, строка за строкой?
Возможно, это способ одновременного доступа?
using ( var filestream = new FileStream( filePath , FileMode.Open , FileAccess.Read , FileShare.Read ) )
{
using ( var reader = new StreamReader( filestream ) )
{
...
}
}
Редактировать
Решили проверить http://www.codeproject.com/KB/database/CsvReader.aspx
что, кажется, дает мне возможность прочитать только две колонки, а затем перейти к следующей строке.
У них также есть несколько тестов, показывающих высокую производительность и низкий профиль памяти.