Basic reading of CSV file

This examples shows how a CSV file can be read. The Meta is generated within the code.

CSV File:

"Pet Name","Age","Color","Date Received","Price","Needs Walking","Type"
"","(Years)","","","(Dollars)","",""
Rover,4.5,Brown,12 Feb 2004,80,True,Dog
Charlie,,Gold,5 Apr 2007,12.3,False,Fish
Molly,2,Black,25 Dec 2006,25,False,Cat
Gilly,,White,10 Apr 2007,10,False,Guinea Pig

Console Application

using System;
using Xilytix.FieldedText;

namespace BasicRead_BuildMeta
{
    // Simple Example of using FtReader to parse a CSV file.
    // In this example, the Meta is created programatically
    // and then used to read the CSV file.

    class Program
    {
        static void Main(string[] args)
        {
            // Name of file to be read
            const string FileName = "BasicExample.csv";

            // Define FieldNames
            const string PetNameFieldName = "PetName";
            const string AgeFieldName = "Age";
            const string ColorFieldName = "Color";
            const string DateReceivedFieldName = "DateReceived";
            const string PriceFieldName = "Price";
            const string NeedsWalkingFieldName = "NeedsWalking";
            const string TypeFieldName = "Type";

            // Create Meta that represents structure and format of
            // BasicExample.csv file
            FtMeta meta = new FtMeta();

            // All FtMeta defaults apply to BasicExample.csv except
            // for HeadingLineCount
            meta.HeadingLineCount = 2;

            // Add fields
            // Add in order of fields in file so index does not
            // have to be explicitly set
            FtMetaField metaField;
            metaField = meta.FieldList.New(FtStandardDataType.String);
            metaField.Name = PetNameFieldName;
            metaField = meta.FieldList.New(FtStandardDataType.Float);
            metaField.Name = AgeFieldName;
            metaField = meta.FieldList.New(FtStandardDataType.String);
            metaField.Name = ColorFieldName;
            metaField = meta.FieldList.New(FtStandardDataType.DateTime);
            metaField.Name = DateReceivedFieldName;

            // Default format for Date Time is not used in
            // "Date Received" field.  Specify the date format used.
            ((FtDateTimeMetaField)metaField).Format = "d MMM yyyy";
            metaField = meta.FieldList.New(FtStandardDataType.Decimal);
            metaField.Name = PriceFieldName;
            metaField = meta.FieldList.New(FtStandardDataType.Boolean);
            metaField.Name = NeedsWalkingFieldName;
            metaField = meta.FieldList.New(FtStandardDataType.String);
            metaField.Name = TypeFieldName;

            // Create Reader
            using (FtReader reader = new FtReader(meta, FileName))
            {
                // Read each record in text file and write field values
                // to console
                object[] recObjects = new object[7];
                int recNumber = 0;
                while (reader.Read())
                {
                    recNumber++;

                    recObjects[0] = reader[PetNameFieldName];
                    recObjects[1] = reader[AgeFieldName];
                    recObjects[2] = reader[ColorFieldName];
                    recObjects[3] = reader[DateReceivedFieldName];
                    recObjects[4] = reader[PriceFieldName];
                    recObjects[5] = reader[NeedsWalkingFieldName];
                    recObjects[6] = reader[TypeFieldName];

                    Console.WriteLine(recNumber.ToString() + ": " +
                                      string.Join(",", recObjects));
                }
            }
        }
    }
}