[英]How can I change my c# code to read from a file?
我有這樣的代碼。
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。
其實還有很多,但是我希望有人能給我一些建議,讓我開始從循環中讀取文件中的數據,直到可以重新開始循環為止。
非常感謝你。
序列化。
[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);
太爛了,是越野車。 還有Xaml序列化:
//序列化var xaml = XamlServices.Save(test); //反序列化var test2 =(Test)XamlServices.Load(XmlReader.Create(new 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#/。NET中讀取文件非常容易
System.IO.StreamReader file;
using(file = new StreamReader(@"c:\myfile.txt"))
{
while((line = file.ReadLine()) != null)
{
// do something with the line
}
}
如果您需要查找,則有大量此類代碼示例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.