从.txt文件保存和加载数据(使用ArrayLists)

时间:2018-03-19 13:13:25

标签: c#

我正在尝试学习如何从ArrayList保存和加载数据 (我知道我应该使用数据库,但我是初学者)。

我有以下问题需要解决:

enter image description here 我正在尝试创建一个允许我保存某人手机号码的WindowsFrom应用程序。添加按钮应该使用我的textboxes添加我放在文件和我的ArrayList中的用户。删除按钮必须删除他(如果他存在)。

这就是我解决问题的方法。

起初我创建了一个类Person:

class Person
{
    private string name, areaCode, number;

    public Person(string nom, string code, string numero)
    {
        name = nom;
        areaCode = code;
        number = numero;
    }

    public string getName()
    {
        return name;
    }

    public string getAreaCode()
    {
        return areaCode;
    }

    public string getNumber()
    {
        return number;
    }
}

没有什么太复杂的了。它只需要name人,areaCode和他的number

然后在我的public partial class Form1 : Form中,我向其声明了我的ArrayList和索引i

    private ArrayList data = new ArrayList();
    // I know using a List (or HashSet) is better, but my teacher wants us to use
    // an ArrayList.
    private int i = 0;

然后我创建了2个函数。一个用于保存我在.txt文件中的ArrayList中的数据。另一个是将数据加载到ArrayList内的.txt文件中(如果我们关闭了程序)。 这是我的保存功能:

    private void Save()
    {
        StreamWriter sr = new StreamWriter("Saved_Files.txt");

        foreach(Person p in data)
        {
            sr.WriteLine(p.getName() + p.getAreaCode() + p.getNumber());
        }

        sr.Close();
    }

我在这里做的是创建一个StreamWriter(因为我想在我的ArrayList中写入.txt文件中的数据)然后,因为我知道我的ArrayList中的所有元素来自输入Person,我做了一个foreach循环,这样我就可以保存我的ArrayList中每个name的{​​{1}},areaCodenumberPerson文件中。然后,我关闭.txt以避免StreamWriter

然后是我的加载功能:

Already in use Exception

再一次没什么太疯狂的。我在这里做的是创建一个 private void load() { StreamReader sr = new StreamReader("Saved_Files.txt"); while(sr.ReadLine() != null) { data[i] = sr.ReadLine(); i++; } sr.Close(); } (因为我们想要读取StreamReader文件中的数据并将其放入ArrayList中)然后我做了一个.txt循环以便所有{ while文件中的{1}}将集成在ArrayList中(我假设一行=一Persons,因为.txtPerson定义,Personname)。然后我增加number以知道我是什么索引。最后,我关闭areaCode以避免异常。

现在我已准备好实施我的i按钮:

StreamReader

在此按钮中,我创建一个人并为其指定ADD private void button1_Click(object sender, EventArgs e) { Person p = new Person(textBox2.Text, comboBox1.SelectedIndex.ToString(), textBox1.Text); for (int i = 0; i < this.i; ++i) { if (data[i] == p) // To avoid duplications { break; } else { data.Add(p); } } Save(); } name(他们来自我的areaCodenumber。然后我做了一个textboxes循环并确保我尝试放入我的ArrayList中的那个人不在那里。然后我combobox这个人在我的for文件中。 这是我的第一个问题。当我这样做时,Save无论如何都会保持空白。

我的第二个问题是在删除按钮:

.txt

如前所述,我创建了一个.txt,然后我创建了一个 private void button2_Click(object sender, EventArgs e) { Person p = new Person(textBox2.Text, comboBox1.SelectedIndex.ToString(), textBox1.Text); DialogResult dialogResult = MessageBox.Show("Are you sure you want to remove the following Client?", "WARNING", MessageBoxButtons.YesNo); if (dialogResult == DialogResult.Yes) { data.Remove(p); } else if (dialogResult == DialogResult.No) { } Save(); } (只是为了确保用户是否真的要删除所选人员)。如果答案是肯定的,那么该人将被删除。如果没有它什么都不做。当然,我保存了一切。

这里的问题是,无论我放在我的Person文件中(手动),并尝试将其删除。它不会去。

有人可以告诉我做错了什么(可能还有如何解决)?

我很抱歉,如果时间太长,我希望我的要求得到正确的表述(请原谅我英语不好,我来自法国)。

0 个答案:

没有答案