我會回答從文件讀取多個結構。
這個例子定義了一個保存數據的結構,你需要用它來做你自己的事情。
這一切都不是專爲您的特定需求,但作爲一般如何保存和讀回結構的列表定義你的自我
完整的代碼,你可以複製並粘貼到一個新的控制檯應用程序項目:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
//where the magic lives
using System.Runtime.Serialization.Formatters.Binary;
namespace savecon
{
class Program
{
static void Main(string[] args)
{
Random rand = new Random();
byte[] data = new byte[20];
rand.NextBytes(data);
DataObj a = new DataObj(data);
DataObj b = new DataObj(data);
DataCollection dc_old = new DataCollection();
dc_old.Add(a);
dc_old.Add(b);
DataCollection.ToFile("D:\\data.my",dc_old);//I use D: drive yours will be different
DataCollection dc_new = DataCollection.FromFile("D:\\data.my");
}
}
[Serializable]//the magic
struct DataObj
{
byte[] data;
public DataObj(byte[] d)
{
data = d;
}
}
[Serializable]//more magic
class DataCollection : IEnumerable<DataObj>
{
List<DataObj> dataobjects;//list<> is Attributed with Serializable as well
public DataCollection()
{
dataobjects = new List<DataObj>();
}
public static DataCollection FromFile(string path)
{
DataCollection dcol;
using (FileStream FS = File.OpenRead(path))
{
dcol = (DataCollection)new BinaryFormatter().Deserialize(FS); // magic happening
}
return dcol;
}
public static void ToFile(string path,DataCollection DC)
{
using (FileStream FS = File.Open(path, FileMode.Create, FileAccess.ReadWrite))
{
new BinaryFormatter().Serialize(FS, DC);
}
}
public void Add(DataObj dobj)
{
dataobjects.Add(dobj);
}
//note that Ienumerable does not matter for serializing (saving the data)
public IEnumerator<DataObj> GetEnumerator()
{
return dataobjects.AsEnumerable().GetEnumerator();
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return dataobjects.GetEnumerator();
}
}
}
什麼樣的數據庫?或者你在使用什麼數據庫產品? – RadioSpace 2014-10-28 05:26:27
我想用文本文件來保存文本文件中的軟音樂的功能,好的,我保存了功能,但我想從file.in中讀取它們的其他含義..我想從文件中讀取結構並將其保存在2 -d數組,每行包含一個從file.my讀取的結構。我的問題是如何從文件中讀取多個結構? – user3024081 2014-10-28 08:25:15
你用什麼代碼將這個結構體轉換成文件? – RadioSpace 2014-10-29 12:44:48