zl程序教程

您现在的位置是:首页 >  后端

当前栏目

C# 读取txt文件

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 = "导出结束";
        }