是否可以使用c#将结构存储在文本文件中

时间:2010-06-07 10:27:01

标签: c# file

我喜欢将结构存储到Text文件中,并且还要将其结构化。

我创建了一个结构名称学生详细信息包含值

studentid,学生姓名,学生avg.i喜欢在Textfile中为许多学生存储这个结构细节。之后我想使用学生id.i从文本文件中重新获取该细节。我正在使用wondows表单应用程序。它可能在C#。

6 个答案:

答案 0 :(得分:3)

您可以将结构集合存储在XML文件中,该文件是结构化文本 这是一个非常快速的例子,可以帮助您入门:

    using System.Collections.Generic;
    using System.IO;
    using System.Xml;
    using System.Xml.Serialization;

    public class Student {
        [XmlElement("id")]
        public int id;
        [XmlElement("name")]
        public string name;
    }

    [XmlRoot("students")]
    public class Students {
        [XmlElement("students")]
        public List<Student> students = new List<Student>();
    }

    class Program {
        static void Main(string[] args) {
            Students s = new Students();
            s.students.Add(new Student() { id = 1, name = "John Doe" });
            s.students.Add(new Student() { id = 2, name = "Jane Doe" });
            XmlSerializer xs = new XmlSerializer(typeof(Students));
            using (FileStream fs = new FileStream("students.xml", FileMode.Create, FileAccess.Write)) {
                xs.Serialize(fs, s);
            }
        }
    }

你会得到类似的东西:

<?xml version="1.0"?>
<students xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <students>
    <id>1</id>
    <name>John Doe</name>
  </students>
  <students>
    <id>2</id>
    <name>Jane Doe</name>
  </students>
</students>

答案 1 :(得分:2)

您还可以查看XmlSerializer

  

将对象序列化和反序列化到XML文档中或从XML文档中反序列化。 XmlSerializer使您可以控制对象如何编码为XML。

答案 2 :(得分:1)

嗯,有XML

答案 3 :(得分:0)

您可以使用xml文件; xml本质上是结构化文本,似乎正是您正在寻找的。从System.Xml命名空间开始。

答案 4 :(得分:0)

像Paolo(和其他人)一样,我会创建一个特定的类和一个像这样的容器类:

[DataContract]
public class Student
{
    [DataMember]
    public int ID { get; set; }

    [DataMember]
    public string FirstName { get; set; }

    [DataMember]
    public string LastName { get; set; }
}

[DataContract]
public class StudentList
{
    [DataMember]
    public string Name { get; private set; }

    [DataMember]
    public List<Student> Students { get; private set; }

    public StudentList(string name)
    {
        Name = name;
        Students = new List<Student>();
    }
}

这些可以由DataContractSerializer(de)序列化。上述课程只是一个粗略的起点。根据您的需要,您必须考虑私人制定者,不变性等。

但是如果您有这样的特定类,您可以轻松创建BindingSource,将StudentList.Students放入其中,并将此BindingSource放入DataGridView以显示和更改列表。

答案 5 :(得分:0)

您只需要Serialize Objects to a File。 检查文章。