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 можно отсюда

Дата 04.07.2008 Тэги
Комментарии (3)

Комментарии

hVostt

hVostt Дата 21.02.2009

Неплохой проект, правда есть пара НО:
1. Проект давно не обновлялся (с 2007 года), что может означать заброшенность или безукоризненность реализации. Последнее, конечно, сомнительно.
2. Для работы с CVS файлами (и подобными) больше подходит специализированный ADO.NET провайдер, которых есть в избытке. В таком случае можно применить любимый ORM/Business Logic framework.

Для единичных маленьких проектов хорош. Для потоковой разработки однозначно нет.

hVostt

hVostt Дата 21.02.2009

Коммент исчез

PoiSoN

PoiSoN Дата 21.02.2009

Да нет, ничего не исчезло, просто у меня премодерация в блоге включена. Smile

 

Последние комментарии

Мои Фотографии