我如何改变我的c#代码从文件读取

本文关键字:代码 文件 读取 我的 何改变 改变 | 更新日期: 2023-09-27 18:04:49

我有这样的代码。

td = new Test.Detail();
t = td.Details;          // This is a list of strings
t.Add("aaa");
t.Add("bbb");
t.Add("ccc");

它是VS2010中的源文件,目前用于加载一些静态数据。现在数据量增加了,所以我们考虑将数据保存在txt文件中。这样就可以很容易地修改。我需要一些方法来读取这个数据到程序从我的文本文件像这样:

> test1
aaa
bbb
ccc
> test2
ddd
eee
fff

代码需要将test1读入一个变量,读入并添加以下行到nD直到空白行。在这一点上,它需要做一些动作。然后它需要在test2中重新开始读取。

实际上有更多的这一点,但我希望有人能给我一些建议,让我开始从一个文件中读取数据,直到某个点,当我可以重新启动循环。

我如何改变我的c#代码从文件读取

序列化。

[DataContract]
public sealed class Test
{
    public DetailCollection Details {get;set;}
}
[CollectionDataContract]
public sealed class DetailCollection : Collection<string> {}

使用这两个类,您可以以多种方式序列化它们,编辑生成的xml文件,并根据您的意愿对它们进行反序列化。

有经典的XML序列化

// serialize
var ser= new XmlSerializer(typeof(Test));
using(var fs= new StreamWriter(@"C:'testdata.xml"))
    ser.Serialize(fs, TestObj);
// deserialize
using(var fs= new FileStream(@"C:'testdata.xml", FileMode.Open, FileAccess.Read, FileShare.Read))
    Test test = (Test)ser.Deserialize(fs);

很糟糕而且有bug。还有Xaml序列化:

//序列化var xaml = XamlServices.Save(test);//反序列化var test2 =(测试)XamlServices.Load(XmlReader. load)新建(StringReader (xaml)));

和DataContractSerializer/NetDataContractSerializer(两种类型的模式相同,一个是以。net为中心的,另一个不是)

// serialize
var ser= new NetDataContractSerializer();
using(var fs= new StreamWriter(@"C:'testdata.xml"))
    ser.Serialize(fs, TestObj);
// deserialize
using(var fs= new FileStream(@"C:'testdata.xml", FileMode.Open, FileAccess.Read, FileShare.Read))
using (var xmlReader = new XmlTextReader(fs))
    Test test = (Test)ser.ReadObject(xmlReader);

我更喜欢后两者,原因有很多。在您的情况下,我建议xaml序列化,如果您将构建设置为Page,并正确使用您的名称空间(xmlns)(当您打开序列化文件时您将看到它们被定义),您将在VS中获得智能感知。有帮助。

请注意,所有代码都是类似c#的伪代码,可能需要调试/语法编辑才能正常工作。

在c#/中读取文件非常容易。净

System.IO.StreamReader file;
using(file = new StreamReader(@"c:'myfile.txt"))
{
    while((line = file.ReadLine()) != null)
    {
     // do something with the line
    }
}

如果你去找的话,有很多这样的例子