C# 读取txt文件
2023-09-27 14:24:13 时间
界面如下:
代码:
private void btnOpenFile_Click(object sender, EventArgs e) { OpenFileDialog fileName = new OpenFileDialog(); fileName.InitialDirectory = Application.StartupPath; fileName.Filter = "日志文件(*.log)|*.log|所有文件(*.*)|*.*"; fileName.FilterIndex = 1; fileName.RestoreDirectory = true; if (fileName.ShowDialog() == DialogResult.OK) { this.lblMsg.Text = "正在读取,请稍等... ..."; string sFileName = fileName.FileName; DataTable dtTemp = new DataTable(); //年,月,日,时间,操作,片名,播放时间,日期,GUID dtTemp.Columns.Add(new DataColumn("编号", typeof(string))); dtTemp.Columns.Add(new DataColumn("年", typeof(string))); dtTemp.Columns.Add(new DataColumn("月", typeof(string))); dtTemp.Columns.Add(new DataColumn("日", typeof(string))); dtTemp.Columns.Add(new DataColumn("时间", typeof(string))); dtTemp.Columns.Add(new DataColumn("操作", typeof(string))); dtTemp.Columns.Add(new DataColumn("片名", typeof(string))); dtTemp.Columns.Add(new DataColumn("播放时间", typeof(string))); dtTemp.Columns.Add(new DataColumn("日期", typeof(string))); dtTemp.Rows.Clear(); string nextLine; DataRow drNew = dtTemp.NewRow(); ; System.IO.StreamReader file = new System.IO.StreamReader(sFileName); CultureInfo cultureInfo = CultureInfo.CreateSpecificCulture("en-US"); string format = "ddd MMM d HH:mm:ss yyyy"; DateTime dtBegin = DateTime.Now; DateTime dtEnd; int lineNo = 1; //行数 while ((nextLine = file.ReadLine()) != null) { if (nextLine.Contains("START OF SHOW")) {//[Mon Oct 26 22:38:09 2015]: [PLAYER]: START OF SHOW "8f353986-ae0c-4cbd-9c46-78e560a49c61" - "Y R_YS" string[] dateArray = nextLine.Split(new string[] { "]: [" }, StringSplitOptions.RemoveEmptyEntries); string strDate = dateArray[0].Replace("[", "").Replace(" ", " "); dtBegin = DateTime.ParseExact(strDate, format, cultureInfo); // 将字符串转换成日期 drNew[0] = lineNo; drNew[1] = dtBegin.Year; drNew[2] = dtBegin.Month; drNew[3] = dtBegin.Day; drNew[4] = dtBegin.TimeOfDay; drNew[5] = "START"; drNew[8] = dtBegin.Date.ToShortDateString(); string[] nameArray = nextLine.Split(new string[] { "\" - \"" }, StringSplitOptions.RemoveEmptyEntries); drNew[6] = nameArray[1].Replace("\"", ""); } else if (nextLine.Contains("END OF SHOW")) { if (!string.IsNullOrEmpty(drNew[1].ToString())) {//[Tue Oct 27 00:40:48 2015]: [PLAYER]: END OF SHOW string[] dateArray = nextLine.Split(new string[] { "]: [" }, StringSplitOptions.RemoveEmptyEntries); string strDate = dateArray[0].Replace("[", "").Replace(" ", " "); dtEnd = DateTime.ParseExact(strDate, format, cultureInfo); // 将字符串转换成日期 drNew[7] = (dtEnd - dtBegin); dtTemp.Rows.Add(drNew); // 重新定义一行 drNew = dtTemp.NewRow(); lineNo++; } } } file.Close(); this.dataGridView1.DataSource = dtTemp; this.lblMsg.Text = "读取结束"; } } private void btnExport_Click(object sender, EventArgs e) { string delimiter = ","; //string outputFilename = "fiverrComScrapedResult.csv"; //string fullFilename = Path.Combine(Application.StartupPath, outputFilename); string saveFileName = ""; SaveFileDialog saveDialog = new SaveFileDialog(); saveDialog.DefaultExt = "xls"; saveDialog.Filter = "Excel文件|*.xls"; saveDialog.FileName = "log"; saveDialog.ShowDialog(); saveFileName = saveDialog.FileName; if (saveFileName.IndexOf(":") < 0) return; //被点了取消 this.lblMsg.Text = "正在导出,请稍等... ..."; StreamWriter csvStreamWriter = new StreamWriter(saveFileName, false, System.Text.Encoding.UTF8); //output header data string strHeader = ""; for (int i = 0; i < dataGridView1.Columns.Count; i++) { strHeader += dataGridView1.Columns[i].HeaderText + delimiter; } csvStreamWriter.WriteLine(strHeader); //output rows data for (int j = 0; j < dataGridView1.Rows.Count; j++) { string strRowValue = ""; for (int k = 0; k < dataGridView1.Columns.Count; k++) { strRowValue += dataGridView1.Rows[j].Cells[k].Value + delimiter; } csvStreamWriter.WriteLine(strRowValue); } csvStreamWriter.Close(); this.lblMsg.Text = "导出结束"; }