Загрузка...

Быстрое чтение текстового файла C#

Тема в разделе C# создана пользователем RaysMorgan 11 ноя 2016. 1048 просмотров

Загрузка...
  1. RaysMorgan
    RaysMorgan Автор темы 11 ноя 2016 https://lolz.live/support-tickets/open 51 794 7 мар 2013
    Код

    lines = new List<string>(1000 * 1000 * 200);
    string line = "";
    using (FileStream fs = File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
    using (BufferedStream bs = new BufferedStream(fs))
    using (StreamReader sr = new StreamReader(bs))
    {
    while ((line = sr.ReadLine()) != null)
    {
    lines.Add(line);
    }
    }

    Первая строка - выделение памяти под лист
    fileName - путь до вашего файла
     
    11 ноя 2016 Изменено
  2. RaysMorgan
    RaysMorgan Автор темы 11 ноя 2016 https://lolz.live/support-tickets/open 51 794 7 мар 2013
    Можно ещё так:
    Код

    lines = new List<string>(1000 * 1000 * 200);
    Parallel.ForEach(File.ReadLines(fileName), line =>
    {
    lock (lines) lines.Add(line);
    });
    [

    Данный код у меня работает на 1,5 - 2 секунды медленнее (при чтении 130мб: 7,5 секунд первым методом, этим - 9 - 9,5 секунд)
     
  3. asazs
    asazs 15 ноя 2016 Заблокирован(а) 34 7 ноя 2016
Top