C# でファイル ハンドラーを使用するのは初めてです。挿入と検索を行いました。この次のコードを使用して更新と削除を行う方法を教えてください。
UI 部分::
private void btnAdd1_Click(object sender, EventArgs e)
{
StudentManager sm = new StudentManager();
sm.AddStudent(textName.Text,textId.Text,textDpt.Text,textSem.Text);
}
public void btnSearch1_Click(object sender, EventArgs e)
{
StudentManager sm = new StudentManager();
Student s = sm.FindStudent(textId.Text);
if (s != null)
{
this.textName.Text = s.GetName();
this.textId.Text = s.ID;
this.textDpt.Text = s.Department;
this.textSem.Text = s.GetSEM();
}
}
検証::
string id = String.Empty;
public void SetName(string name)
{
if(!String.IsNullOrEmpty(name))
{
this.name = name;
}
}
public string ID
{
get { return id; }
set { id = value; }
}
string department = String.Empty;
public string Department
{
get { return department; }
set { department = value; }
}
string SEM= String.Empty;
public void SetSEM(string sem)
{
if (!String.IsNullOrEmpty(sem))
{
this.SEM = sem;
}
}
public string GetSEM()
{
return this.SEM;
}
public String GetName()
{
return this.name;
}
}
学生マネージャー::
class StudentManager
{
ArrayList students;
const string FILENAME = @"d:\students.txt";
public StudentManager()
{
SetStudentList();
}
private void SetStudentList()
{
if (students == null)
{
//create a file handler
FileHandler sfh = new FileHandler();
//initialize the teacher list object
students = new ArrayList();
//Now read all the lines from the teacher.txt
//each line represent a teacher
string[] studentfromfile = sfh.getAllLines(@FILENAME);
int totalstudents = studentfromfile.Length;
//go through each teacher and create teacher object to add it to the teacher list.
for (int i = 0; i < totalstudents; i++)
{
string studentinfo = studentfromfile[i];
string[] studentinfobroken = studentinfo.Split(new char[] { ',' });
if (studentinfobroken.Length == 4)
{
//this part is being duplicated - can think how?
Student s = new Student();
s.SetName(studentinfobroken[0]);
s.ID= studentinfobroken[1];
s.Department = studentinfobroken[2];
s.SetSEM(studentinfobroken[3]);
this.students.Add(s);
}
}
}
}
public void AddStudent(string fullname, string ID, string dept,string Semester )
{
Student s = new Student();
s.SetName(fullname);
s.ID = ID;
s.Department = dept;
s.SetSEM(Semester);
this.students.Add(s);
FileHandler sfh = new FileHandler();
string studentInfo = Environment.NewLine + s.GetName() + "," + s.ID + "," + s.Department + "," + s.GetSEM();
sfh.AddLine(@FILENAME, studentInfo);
}
public Student FindStudent(string ID)
{
foreach (Student s in students)
{
if (s.ID.Equals(ID))
{
return s;
}
}
return null;
}
class FileHandler
{
public String[] getAllLines(string fileName)
{
try
{
String[] lines = File.ReadAllLines(@fileName);
return lines;
}
catch (Exception e)
{
throw e;
}
}
public String GetAllText(string fileName)
{
try
{
String content = File.ReadAllText(@fileName);
return content;
}
catch (Exception e)
{
throw e;
}
}
public void AddLine(string filename, string line)
{
StreamWriter sr = null;
try
{
sr = new StreamWriter(@filename, true);//true for append
sr.WriteLine(line);
}
catch (Exception e)
{
throw e;
}
finally
{
sr.Close();
}
}