如何替换文本文件中的特定行?

时间:2018-09-13 07:40:34

标签: c# asp.net streamreader streamwriter

Stackoverflow早上好,

我正在使用ASP.Net/C#开发一个时间跟踪Web应用程序。 有一个“即将到来”按钮,在文本文件的一行中写入以下内容:ID;用户名;日期;时间。

在另一侧,有“离开”按钮。它应该用相同的内容替换行,但增加离开时间。所以应该看起来像这样:ID;用户名;日期; TimeOfComing; TimeOfLeaving。

就是这个问题。如何更换管线?每件事(ID,用户等)都存储在名为“ cZeile”的帮助程序类的变量中。那么,如何通过按“离开”按钮btn_geht来替换行?

代码:

namespace Zieterfassung_0._0._2pre_alpha
{
    public partial class Zeiten : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string sPath = @"C:\VSTO\Projects\Zeiterfassung\Zeiterfassung`\obj\Debug\Zeiten.txt";`
            tb_User.Text = WindowsIdentity.GetCurrent().Name.ToString();
            tb_Datum.Text = DateTime.Now.ToString("dd.MM.yyyy");
            tb_Zeit.Text = DateTime.Now.ToString("hh:mm");
            cZeile KommtDatumZeit = new cZeile();

            if (File.Exists(sPath))
            {
                using (StreamReader sr = new StreamReader(sPath))
                {
                    while (!sr.EndOfStream)
                    {
                        KommtDatumZeit = cZeiterfassung.GetZeileObjectFromZeileString(sr.ReadLine(), ";");
                    }
                }

            }
            tb_Kommt.Text = KommtDatumZeit.dtKommt.ToString();
        }
        protected void btn_Kommt_Click(object sender, EventArgs e)
        {
            string ID = DateTime.Now.ToString("yyyyMMdd_hhmm");
            string sAusgabeKommt = string.Format("{0:yyyyMMdd_hhmm};{1};{2:dd.MM.yyyy};{3:hh:mm};;", ID, tb_User.Text, tb_Datum.Text, tb_Zeit.Text);
            string sPath = @"C:\VSTO\Projects\Zeiterfassung\Zeiterfassung\obj\Debug\Zeiten.txt";
            FileInfo fi = new FileInfo(sPath);

            if (!fi.Exists)
            {
                fi.Create().Dispose();
            }

            using (StreamWriter sw = File.AppendText(sPath))
            {
                sw.Write(sAusgabeKommt);
            }
        }

        protected void btn_Geht_Click(object sender, EventArgs e)
        {
            string sAusgabeGeht = string.Format("{0:hh:mm}", tb_Zeit.Text);
            string sPath = @"C:\VSTO\Projects\Zeiterfassung\Zeiterfassung\obj\Debug\Zeiten.txt";
            FileInfo fi = new FileInfo(sPath);
            cZeile Geht = new cZeile();

            using (StreamReader sr = new StreamReader(sPath))
            {
                Geht = cZeiterfassung.GetZeileObjectFromZeileString(sr.ReadLine(), ";");

                Geht.Geht = DateTime.Now.ToString("hh:mm");
                Geht.dtGeht = DateTime.Now;

                using(StreamWriter sw = new StreamWriter(sPath))
                {

                }
            }

        }
    }
}

助手类:

namespace Prog
{
    public static class cZeiterfassung
    {
        public static cZeile GetZeileObjectFromZeileString(string Zeile, string Trenner)
        {
            cZeile ZeileReturn = new cZeile();
            string[] separators = { Trenner };
            string[] arZeile = Zeile.Split(separators, StringSplitOptions.None);

            ZeileReturn.ID = arZeile[0];
            if (arZeile[1].IndexOf("\\") != -1)
            {
                ZeileReturn.Domain = arZeile[1].Substring(0, arZeile[1].IndexOf("\\"));
                if (arZeile[1].Length >= arZeile[1].IndexOf("\\"))
                    ZeileReturn.User = arZeile[1].Substring(arZeile[1].IndexOf("\\") + 1);
            }
            else
                ZeileReturn.User = arZeile[1];
            ZeileReturn.Datum = arZeile[2];
            ZeileReturn.Kommt = arZeile[3];
            ZeileReturn.Geht = arZeile[4];

            if(!string.IsNullOrEmpty(arZeile[2]))
                ZeileReturn.dtDatum = Convert.ToDateTime(arZeile[2]);
            if(!string.IsNullOrEmpty(arZeile[3]))
            ZeileReturn.dtKommt = Convert.ToDateTime(arZeile[3]);
            if (!string.IsNullOrEmpty(arZeile[4]))
                ZeileReturn.dtGeht = Convert.ToDateTime(arZeile[4]);
            return ZeileReturn;

        }
    }//cZeiterfassung
    public class cZeile
    {
        public string ID { get; set; }
        public string Domain { get; set; }
        public string User { get; set; }
        public string Datum { get; set; }
        public string Kommt { get; set; }
        public string Geht { get; set; }
        public DateTime dtDatum { get; set; }
        public DateTime dtKommt { get; set; }
        public DateTime dtGeht { get; set; }
        public string Dauer { get; set; }
    }
}

0 个答案:

没有答案