如何在C#中将学生对象写入文件

时间:2018-03-30 14:10:34

标签: c#

Action Key

在本练习中,您将从文件中读取一组学生。然后将每个学生的分数增加1,并将结果写出到另一个文件。该文件的格式与上一练习中的格式相同。输入文件的名称将是第一个参数,输出文件的名称将是第二个参数。

例如,如果输入文件是:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace WriteStudents
{
    class Student
    {
        public String name;
        public int mark;

        public Student(String n, int m)
        {
            name = n;
            mark = m;
        }
        public override string ToString()
        {
            return name + " " + mark;
        }
        void print(Student[] group)
        {
            for (int i = 0; i < group.Length; i++)
                Console.WriteLine(group[i]);
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            String filePath = @"C:\Users\Path\students.txt";
            String[] lines = File.ReadAllLines(filePath);

            Student[] group = new Student[lines.Length];

            for (int i = 0; i < lines.Length; i++)
            {
                String[] tokens = lines[i].Split(); //split the names from the marks;
                group[i] = new Student(tokens[0], int.Parse(tokens[1]));
            }

            File.WriteAllLines(filePath, group); //error is here

        }
    }
}

您的程序将创建以下文件:

John 50
Abby 40

伙计我怎样才能将Student对象写入文件?它不允许我将Student对象转换为String对象。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

方法File.WriteAllLines仅将string []作为要输出的数据。您正在传递Student对象的数组。

您需要获取对象的字符串表示形式,并将其传递给写入函数。

这只是众多方法之一:

static void SaveAllStudentsToFile(string fileName, Student[] group)
{
    // create a place to hold data
    string[] data = new string[group.Length];

    int counter = 0;
    for (int i = 0; i < group.Length; i++)
    {
        data[i] = group[i].ToString();
    }

    // now write the data to a file
    File.WriteAllLines(fileName, data);
}