FileHelpers

    Как часто Вам приходилось считывать данные разделенные, например, запятой (формат CSV) из файла, обрабатывать их и что-то в дальнейшем с ними делать?

    Конечно можно написать код самому, но это займет время и не всегда будет эффективно.

    FileHelpers — модуль которые Вам поможет. Умеет синхронно или асинхронно считывать данные из файла в объект. Также может вписать данные обратно в файл с заданным разделителем. Может считывать данные из базы данных. Имеет еще кучу всяких возможностей, о которых можно узнать подробнее на официальном сайте этого модуля.


    Пример асинхронного чтения данных из файла

    Допустим у вас имеется следующий файл с данными разделенными символом "|":
    10248|VINET|04071996|32.38
    10249|TOMSP|05071996|11.61
    10250|HANAR|08071996|65.83
    10251|VICTE|08071996|41.34
    ...............

    Вам необходимо создать класс, который описывает структуру данных файла:
     [DelimitedRecord("|")] // Определяем разделитель
     public class Orders
     {
       public int OrderID;

       public string CustomerID;

       [FieldConverter(ConverterKind.Date, «ddMMyyyy»)]
       public DateTime OrderDate;

       public decimal Freight;
     }
    * This source code was highlighted with Source Code Highlighter.

    А теперь асинхронно считываем данные:
      FileHelperAsyncEngine engine = new FileHelperAsyncEngine(typeof(Orders));

      engine.BeginReadFile(«TestIn.txt»);

      // The engine is IEnumerable
      foreach (Orders ord in engine)
      {
        // your code here
        Console.WriteLine(ord.CustomerID);
      }

      engine.Close();
    * This source code was highlighted with Source Code Highlighter.

    Вот и все.

    Скачать

    Скачать FileHelpers v2.0 можно отсюда.
    Поделиться публикацией

    Похожие публикации

    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 7

      +2
      Спасибо большое) не знал о такой вещице)
        0
        не за что. :)
        0
        Простите за минус   промахнулся. Компенсировал в карму.
          0
          Не страшно. :)
          0
          По поводу CSV, его и через OleDB читать можно, но это все будет относительно медленно.
          Советую посмотреть в сторону http://www.codeproject.com/KB/database/C…. Есть Databinding.
          По скорости - 50,000 записей из 145 полей процессит за 1,5 сек (30 MB/с).
            0
            сейчас потестю на 200к записей, посмотрим
              +1
              вывод 200к записей вида
              int string
              занял 2 секунды. Хорошая вещица, будем пользовать!

            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

            Самое читаемое