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

本文关键字:项目 界面 何使用 文件 添加 | 更新日期: 2023-09-27 18:23:56

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

我觉得我对界面没问题。

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

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

您一直在删除和重新创建文件。试试这个:

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编码的文本附加到现有文件中,如果指定的文件不存在,则附加到新文件中。

从这里开始。

您可能想要签出的另一种方法是AppendAllText,它获取一个路径和一个字符串,并在一行中为您完成所有的脏活。如果你想要换行,只需要确保你的字符串以"''r''n"结尾。

这是因为如果文件存在,您将删除它:

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

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