如何使用界面在文件中添加所有列出的学生项目
本文关键字:项目 界面 何使用 文件 添加 | 更新日期: 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);
}
您应该打开文件而不是删除它。