我研究了这个问题的所有相关标题/主题,但似乎都没有解决我的问题......它产生"Seperated_File.txt",但它完全是一个空白的文本文件。感谢您的回复。
已更新(解决方案(
string[] lines = File.ReadAllLines(@"d:Processed_Text.txt");
DataTable dt = new DataTable();
dt.Columns.Add("IP Address");
dt.Columns.Add("Date");
dt.Columns.Add("Time");
dt.Columns.Add("GMT");
dt.Columns.Add("Method");
dt.Columns.Add("Resource");
dt.Columns.Add("Port");
dt.Columns.Add("Bytes");
dt.Columns.Add("Services");
dt.Columns.Add("Destination");
dt.Columns.Add("Operating System");
foreach (string line in lines)
{
string[] split = line.Split(' ', ':');
split = split.Where(r => !string.IsNullOrWhiteSpace(r)).ToArray();
Foo foo = new Foo();
foo.IPAddress = split[0];
foo.Date = split[1];
foo.Time = string.Format("{0}:{1}:{2}", split[2], split[3], split[4]);
foo.GMT = split[5];
foo.Method = split[6];
foo.Resource = split[7];
foo.Port = split[8];
foo.Bytes = split[9];
foo.Service = split[10];
foo.Destination = split[11];
foo.OS = split[12];
dt.Rows.Add(foo.IPAddress, foo.Date, foo.Time, foo.GMT, foo.Method, foo.Resource, foo.Port, foo.Bytes, foo.Service, foo.Destination, foo.OS);
}
using (StreamWriter sw = new StreamWriter(@"d:Seperated_Text.txt"))
foreach (DataRow dr in dt.Rows)
{
Console.WriteLine(string.Format("{0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10}", dr[0], dr[1], dr[2], dr[3], dr[4], dr[5], dr[6], dr[7], dr[8], dr[9], dr[10]));
sw.WriteLine(String.Join(",", dr.ItemArray));
sw.WriteLine(dr);
}
Console.ReadLine();
}
为了访问 DataRow 中的数据,您需要执行以下操作:
foreach (DataRow row in table.Rows)
{
Console.WriteLine($"{row.ItemArray[0]} | {row.ItemArray[1]} | {row.ItemArray[2]}");
}
或者如果您愿意:
foreach (DataRow row in table.Rows)
{
Console.WriteLine($"{row["IP Address"]} | {row["Date"]} | {row["Time"]}");
}
文件为空的原因是因为它已经存在,并且您没有使用 StreamWriter 的第二个参数进行追加:
bool append = true;
using (StreamWriter sw = new StreamWriter(@"d:Seperated_Text.txt", append))