0

我正在尝试导入日志文件并以网格格式(很像 excel)在列表视图中显示它。我想知道这可能是最好的方法。文件阅读器和数据表可能吗?我以前没有编写过这样的程序。这是一个 Windows 窗体项目。

关于这个问题的任何建议都会有很大帮助。

编辑2:

日志文件示例:

 = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
 i d   =   1 0 0 1
 P a r a m e t e r   1   =   E N A B L E D
 P a r a m e t e r   2   =   D I S A B L E D
 P a r a m e t e r   3   =   N U L L
 P a r a m e t e r   4   =   N U L L
 P a r a m e t e r   5   =   S U C C E S S  
 = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 

这与不同的数据重复。

我希望将其读入并显示在不同标题 ID、名称等下的列表视图中

此应用程序也仅限于使用 .NET 3.5。

4

2 回答 2

1

我最好的猜测是使用StreamReader一次读取一行文件并将数据放在DataGridView中。

编辑:以下代码适用于针对 .Net 2.0 的项目,并假设您的 DataGridView 的名称是 dataGridView1

StreamReader reader = new StreamReader(@"C:\Users\jdudley\file.txt");
// Will be incremented every time ID shows up so it must started at -1 so we don't
// try and start inserting at 1.
int rowIndex = -1;
while (!reader.EndOfStream)
{
    string line = reader.ReadLine();
    string[] parsedLine = line.Split(new char[] { '=' });
    if(!this.dataGridView1.Columns.Contains(parsedLine[0]))
    {
        dataGridView1.Columns.Add(parsedLine[0],parsedLine[0]);
    }
    if (parsedLine[0].Trim().Equals("id"))
    {
        rowIndex++;
        dataGridView1.Rows.Add();
    }
    dataGridView1[parsedLine[0], rowIndex].Value = parsedLine[1];
}
于 2012-06-20T13:42:51.980 回答
0

如果您尝试在日志文件中的每一行显示列表中的一行,我只需使用File.ReadAllLines读取文件,然后使用字典来存储每个日志条目的键值对:

List<Dictionary<string, string>> entries = new List<Dictionary<string, string>>();
Dictionary<string, string> entry = null;
foreach (string line in File.ReadAllLines(logFilePath))
{
    string[] fields = line.Split('=');
    if (fields.Length > 1)
    {
        if (fields[0].Trim() == "id")
        {
            if (entry != null) entries.Add(entry);
            entry = new Dictionary<string, string>();
        }
        if (entry != null) entry[fields[0].Trim()] = fields[1].Trim();
    }
}
if (entry != null) entries.Add(entry);
于 2012-06-20T13:38:28.570 回答