从* .dat文件中读取数据并将新字符串写入同一文件 [英] Read data from a *.dat file and write a new string into the same file

查看:131
本文介绍了从* .dat文件中读取数据并将新字符串写入同一文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

每次用户输入新密码时,我都有一个写入dat文件的程序。我希望能够像这样编码密码1 | ****** |文件夹| 2 | **** |不同的文件夹。有没有办法从文件读取到一个字符串,并找出文件中有多少子串并除以3并使用该数字作为下一个密码?这是编写它的代码。

I have a program that writes to a dat file every time the user enters a new password.I want to be able to number the passwords like this 1|******|Folder|2|****|different folder.Is there a way to read from the file into a string and find out how many substrings in the file are there and divide by 3 and use that number for the next password? here is the code that writes it.

              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();}

推荐答案

你从文件中读取所有数据,然后尝试阅读单行:

You read all the data from the file, and then try to read a single line:
Streamreader s = new Streamreader();
string d = s.ReadToEnd();   // read all file content into the string d
string e ;
string line = "";
while ((line = s.ReadLine())!=null) // the file is positioned at EOF so nothing to read.



对变量使用无意义的单个字符名称没有帮助。


And the use of meaningless single character names for your variables does not help.


这篇关于从* .dat文件中读取数据并将新字符串写入同一文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆