另一种文件读取方法(FileHelpers)

1:前言

     本文介绍一个开源的文件读取类库,给大家提供另外一种文件读取的方法。

     项目名称:FileHelpers

     项目地址:http://www.filehelpers.com/

2:Example

 

代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using FileHelpers;
using FileHelpers.DataLink;

namespace ConsoleApplication
{

    [DelimitedRecord(
"\t")]
    
public class LogInfo
    {
        [FieldConverter(ConverterKind.Date, 
"yyyy-MM-dd HH:mm:ss.FFF")]
        
public DateTime DateTime;

        
public string empty;

        
public string Method;
        
public string IsSuccess;
        
public string ElapsedMilliseconds;
        
public string TnsName;
        
public string CommandText;
    }


    
class Program
    {

        
protected static string GetInsertSqlCust(object record)
        {
            LogInfo obj 
= (LogInfo)record;

            
return string.Format(
                
"INSERT INTO Info "
                
+"([DateTime]"
                
+",[Methord]"
                
+",[IsSuccess]"
                
+",[ElapsedMilliseconds]"
                
+",[TnsName]"
                
+",[CommandText])"
                
+" VALUES "
                
+"('{0}'"
                
+",'{1}'"
                
+",{2}"
                
+",{3}"
                
+",'{4}'"
                
+",'{5}')",
                obj.DateTime.ToString().Replace(
"'""\""),
                obj.Method.Replace("'""\""),
                obj.IsSuccess.Replace("'""\""),
                obj.ElapsedMilliseconds.Replace("'""\""),
                obj.TnsName.Replace("'""\""),
                obj.CommandText.Replace("'""\"")
                );

        }

        
static void Main(string[] args)
        {
            
            FileHelperEngine engine 
= new FileHelperEngine(typeof(CustomersTabIgnored3));

            CustomersTabIgnored3[] res 
= (CustomersTabIgnored3[])engine.ReadFile(@"E:\Server\DACServer\log\Info\2010-04-09 16.log");

            
foreach (CustomersTabIgnored3 record in res)
            {
                Console.WriteLine(record.DateTime.ToString());
                Console.WriteLine(record.Method);
                Console.WriteLine(record.IsSuccess);
                Console.WriteLine(record.ElapsedMilliseconds);
                Console.WriteLine(record.TnsName);
                Console.WriteLine(record.CommandText);
            }

            Console.ReadLine();
            

            SqlServerStorage storage 
= new SqlServerStorage(typeof(LogInfo));

            storage.ServerName 
= "127.0.0.1";
            storage.DatabaseName 
= "LogInfo";

            storage.InsertSqlCallback 
= new InsertSqlHandler(GetInsertSqlCust);

            
try
            {
                FileDataLink link 
= new FileDataLink(storage);
                link.InsertFromFile(
@"E:\Server\DACServer\log\Info\2010-04-09 16.log");
            }
            
catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

        }
    }
}

 3:后记

     该框架是值类型与引用类型的另一种转换方式。还有一个文档数据库(好像是编译不通过,随后我在细致的看看,地址是:http://groups.google.com/group/ravendb/

posted @ 2010-05-27 10:59  李占卫  阅读(672)  评论(0编辑  收藏  举报