另一种文件读取方法(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);
}
}
}
}
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/)