如何使用界面在文件中添加所有列表学生项目?

时间:2015-11-21 17:44:57

标签: c# .net

您好我试图使用界面在文件中添加列表,但我只能在其中添加列表的最后一项?怎么了?

我觉得我对界面没问题。

//interface
interface IRuajtshem
    {
      void Ruaj();
    }

我认为这是问题。

 //class
        public class Student : IRuajtshem
    {
        protected int ID;
        protected string emri;
        protected string mbiemri;

        ...
        ...
        ...

        public void Ruaj()
        {
            string path = @"C:\\...\\...\\text.txt";
            if (File.Exists(path))
            {
                File.Delete(path);
            }
            else if (!File.Exists(path))
                File.Create(path).Close();
            var f = File.AppendText(path);
            f.WriteLine(Studenti + " " + Studentii + " " + Studentiii);
            f.Close();
        }
    }

最后是名单......

//@Main()
List<Student> student = new List<Student>()
            {
                new Student(1, "Name", "Surname"),
                new Student(2, "name", "Surname"),
                new Student(3, "Name", "surname"),
                new Student(4, "name", "surname")
            };

            foreach (Student st in student)
            {
                st.Ruaj();
                Console.WriteLine();
            }

2 个答案:

答案 0 :(得分:0)

您不断删除并重新创建该文件。试试这个:

public void Ruaj()
{
    string path = @"C:\\...\\...\\text.txt";
    using (var f = File.AppendText(path))
    {
        f.WriteLine(Studenti + " " + Studentii + " " + Studentiii);
    }
}

这是代码中保留“重置”文件的部分:

if (File.Exists(path))
{
    File.Delete(path); // deletes file if it exists
}
else if (!File.Exists(path))
    File.Create(path).Close(); // creates empty file if doesnt exist

我认为创建一个空文件也是不必要的,因为如果它不存在,AppendText会为你创建文件,而不会抛出错误:

  

创建一个StreamWriter,它将UTF-8编码的文本附加到现有文件,如果指定的文件不存在,则附加到新文件。

来自here

您可能想要检查的另一种方法是AppendAllText,它获取路径和字符串,并在一行中完成所有脏工作。如果你想要换行,只需要确保你的字符串以“\ r \ n”结尾。

答案 1 :(得分:0)

这是因为您删除了该文件:

if (File.Exists(path))
            {
                File.Delete(path);
            }

您应该打开文件而不是删除它。