List<Student> zoznam = new List<Student>();
List<string> inicZac = new List<string>();
List<string> ID = new List<string>();
List<string> Meno = new List<string>();
List<string> Priezvisko = new List<string>();
List<string> Adresa = new List<string>();
List<string> DatumNarodenia = new List<string>();
List<string> Heslo = new List<string>();
List<string> Login = new List<string>();
List<string> inicKon = new List<string>();
private int id;
StreamReader reader = new StreamReader(File.OpenRead("student.csv"));
public databazaStudentov()
{
while (!reader.EndOfStream)
{
var line = reader.ReadLine();
var values = line.Split(';');
inicZac.Add(values[0]);
ID.Add(values[1]);
Meno.Add(values[2]);
Priezvisko.Add(values[3]);
Adresa.Add(values[4]);
DatumNarodenia.Add(values[5]);
Heslo.Add(values[6]);
Login.Add(values[7]);
inicKon.Add(values[8]);
zoznam.Add(new Student(values[1], values[2], values[3], values[4], values[5], values[6], values[7]));
}
}
效果很好。但是,当我在正在运行的应用程序中创建一个新学生时,我希望安全地轻松写入.csv。这个功能正在创建一个新学生:
public void addStudent(string meno, string priezvisko, string adresa, string datum)
{
string tempID = generujID(); //random gener ID
string tempLogin = generujLogin(meno, priezvisko); //random gener Login
string tempHeslo = generujHeslo(); //random gener password
zoznam.Add(new Student(tempID, meno, priezvisko, adresa, datum, tempLogin, tempHeslo));
ID.Add(tempID);
Meno.Add(meno);
Priezvisko.Add(priezvisko);
Adresa.Add(adresa);
DatumNarodenia.Add(datum);
Login.Add(tempLogin);
Heslo.Add(tempHeslo);
// I created a new student and now I want save him into the csv
}
这是我的.csv:http://i.imgur.com/P0PnxpB.jpg?1
可能有更多方法来解决它。如果有人向我展示如何在新行上保存新学生,或者如何用list.csv覆盖列表中的所有内容,我将不胜感激。感谢您的提示和对不起我的英语。
答案 0 :(得分:2)
我会创建一个新类来创建学生的csv文件。
public class CsvGen
{
private _fileName=string.Empty;
private StringBuilder csvRows;
public CsvGen(string fileName)
{
_fileName=fileName;
csvRows=new StringBuilder();
}
public void Add(Student student)
{
var row=String.Format("{0},{1},{2},{3}",student.Id,student.Name,student.City,
Environment.NewLine);
csvRows.Append(row);
}
public void SaveFile()
{
System.IO.File.WriteAllText(_fileName,csvRows.ToString());
}
}
现在,从您的其他类开始,您可以创建此类的新实例,并在每次向列表中添加项目时调用AddStudent方法,并在循环后调用SaveFile。
CsvGen csvGen=new CsvGen(@"C:\\temp\myFile.csv");
// ^ any location with proper permission for .net to write files.
public void AddStudent(int id, string name, string city)
{
Student stud=new Student();
stud.Id=id;
stud.Name=name;
stud.City=city;
csvGen.Add(stud);
}
因此,一旦您创建了所有学生,您可以调用SaveFile
方法来保存csv文件
while (!someCondition)
{
AddStudent(2,"scott","detroit");
}
csvGen.SaveFile();
答案 1 :(得分:1)
快速解决您的问题。
public void addStudent(string meno, string priezvisko, string adresa, string datum)
{
//your code
//.........
// I created a new student and now I want save him into the csv
using(StreamWriter sw = new StreamWriter("student.csv", true))//true to append after the file
{
sw.WriteLine("{0};{1};{2};{3};{4};{5};{6};",
tempID, meno, priezvisko, adresa, datum, tempLogin, tempHeslo);
sw.Close();
}
}
答案 2 :(得分:0)
如果你想读写csv,那么我建议你试试CsvHelper库,因为它比你目前的做法要简单得多。