我在使用某些代码时遇到了一些问题。我有一个' .log'我希望在GridView的不同列中显示文件的每一列的文件。我尝试了以下代码,但它只生成一个列,然后将所有数据放入其中。任何人都可以发现我的代码出了什么问题。或者是否有更好的方法将日志文件加载到网页中,以便我可以看到数据并将TimeData标记转换为正常的TimeDate格式,以便我们可以更好地理解日志文件。
private static DataTable GetDataTableFromFile(string csvfilePath)
{
DataTable fileData = new DataTable();
using (TextFieldParser fileReader = new TextFieldParser(csvfilePath))
{
fileReader.SetDelimiters(new String[] { "\t" });
fileReader.HasFieldsEnclosedInQuotes = true;
//Read columns from CSV file, remove this line if columns not exits
string[] colFields = fileReader.ReadFields();
foreach (string column in colFields)
{
DataColumn datecolumn = new DataColumn(column);
datecolumn.AllowDBNull = true;
fileData.Columns.Add(datecolumn);
}
while (!fileReader.EndOfData)
{
string[] fieldData = fileReader.ReadFields();
//Making empty value as null
for (int i = 0; i < fieldData.Length; i++)
{
if (fieldData[i] == "")
{
fieldData[i] = null;
}
}
fileData.Rows.Add(fieldData);
}
}
return fileData;
}
任何建议都会很棒。
亲切的问候
答案 0 :(得分:0)
如果您使用其中一个标准库,例如Log4Net,Logging Application Block,那么您可以使用Loupe
即使您没有使用其中一个标准日志记录库,您仍然可以编写自己的解析器,以便Loupe可以处理您的文件格式。
使用现有的软件可能更好,因为它可以做你想要的,甚至更多。
答案 1 :(得分:0)
如果您确定每行的分隔符数量Tab相同,那么您可以执行以下操作(在while loop
中):
while (!fileReader.EndOfData)
{
string[] fieldData = fileReader.ReadFields();
if(fieldData.Length > 0)
{
DataRow dr = dt.NewRow();
for (int i = 0; i < fieldData.Length; i++)
{
dr[i] = fieldData[i];
}
fileData.Rows.Add(dr);
}
}