Считывание данных из файла *.dat и запись новой строки в тот же файл
У меня есть программа, которая записывает в файл dat каждый раз, когда пользователь вводит новый пароль.Я хочу иметь возможность нумеровать пароли вот так 1|******|папка|2|****|другая папка.Есть ли способ прочитать из файла строку и узнать, сколько подстрок в файле есть, разделить на 3 и использовать это число для следующего пароля? вот код, который его пишет.
private void buttonclick(object sender,EventArgs e) { int counter; counter = TextBoxs.Count + 1; TextBox tb = new TextBox(); Label labl = new Label(); Label num = new Label(); tb.Text = InputText1.Text; labl.Text = "folder"+counter; num.Text = counter.ToString(); TextBoxs.Add(tb); string currentEntry = num.Text + "|" + tb.Text.Replace("|", "~") + "|" + labl.Text + "|"; File.AppendAllText("SavedData.dat", currentEntry); this.Hide(); } and the code that reads it to the second form if (File.Exists("SavedData.dat")) { using (StreamReader sr = new StreamReader("SavedData.dat")) { Point newloc = new Point(175,30); Point numloc = new Point(25,30); Point labloc = new Point(60,30); string line = ""; while ((line = sr.ReadLine())!=null) { string[] lineData = line.Split('|'); if (lineData.Length >= 3) { Label labl = new Label(); Label num = new Label(); TextBox tb = new TextBox(); tb.Enabled = false; string currentnumber = lineData[0]; string currentTbText = lineData[1]; string currentLablText = lineData[2]; labl.Size = label2.Size; tb.Size = passwordtextbox.Size; tb.UseSystemPasswordChar = true; num.Size = label3.Size; num.Location = numloc; tb.Location = newloc; labl.Location =labloc; tb.Text = currentTbText; labl.Text = currentLablText; num.Text = currentnumber; tb.ReadOnly = true; TextBoxes.Add(tb); labels.Add(labl); nums.Add(num); this.Controls.Add(num); this.Controls.Add(tb); this.Controls.Add(labl); } if (lineData.Length >= 6) { Label labl = new Label(); Label num = new Label(); TextBox tb = new TextBox(); tb.Enabled = false; string currentnumber = lineData[3]; string currentTbText = lineData[4]; string currentLablText = lineData[5]; newloc.Offset(0,tb.Height +5); numloc.Offset(0,tb.Height + 5); labloc.Offset(0,tb.Height +5); labl.Size = label2.Size; tb.ReadOnly = true; tb.Size = passwordtextbox.Size; num.Size = label3.Size; tb.UseSystemPasswordChar = true; num.Location = numloc; tb.Location = newloc; labl.Location = labloc; tb.Text = currentTbText; labl.Text = currentLablText; num.Text = currentnumber; TextBoxes.Add(tb); labels.Add(labl); nums.Add(num); this.Controls.Add(num); this.Controls.Add(tb); this.Controls.Add(labl); What I have tried: here is the code i have tried <pre> Streamreader s = new Streamreader(); string d = s.ReadToEnd(); string e ; string line = ""; while ((line = s.ReadLine())!=null) {string[] lineData = line.Split('|'); e = (lineData.Count/3).ToString();} counter = TextBoxs.Count + 1; TextBox tb = new TextBox(); Label labl = new Label(); Label num = new Label(); tb.Text = InputText1.Text; labl.Text ="Folder"+counter; num.Text = e; TextBoxs.Add(tb); string currentEntry = num.Text + "|" + tb.Text.Replace("|", "~") + "|" + labl.Text + "|"; File.AppendAllText("SavedData.dat", currentEntry); this.Hide();}
Gerry Schmitz
К чему все эти глупости с текстовыми полями? Это не имеет никакого отношения к вопросу.
Codingnow20
текстовые поля отображаются во второй форме, и это был единственный способ, которым я мог понять, как это сделать
Mike V Baker
Когда вы запускаете этот код, что вы ожидаете увидеть в currentEntry и что на самом деле заканчивается в currentEntry?
Это пароли? И вы записываете их в текстовый файл? Никакого шифрования? Я предлагаю там переосмыслить ситуацию.
Codingnow20
я пытаюсь понять это, прежде чем пытаться изучать шифрование