您好我试图使用界面在文件中添加列表,但我只能在其中添加列表的最后一项?怎么了?
我觉得我对界面没问题。
//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();
}
答案 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);
}
您应该打开文件而不是删除它。