从c#中的二进制文件读取多个结构#
问题描述:
我想插入二进制文件中的数据。数据是50 struct.i想要将二进制文件中的软音乐文件的特征保存为数据库,我可以使用它。从c#中的二进制文件读取多个结构#
我为每首歌建立了一个结构,并将其插入到文件中。 结构包含:
public struct s {
public byte class_no;
public int sample_no;
public byte [] template;
}
其中模板尺寸4410 我的文件现在包含50结构的1-d阵列,我想使用二进制文件中读取它,使所有的结构的结构的阵列中的文件
答
我会回答从文件读取多个结构。
这个例子定义了一个保存数据的结构,你需要用它来做你自己的事情。
这一切都不是专为您的特定需求,但作为一般如何保存和读回结构的列表定义你的自我
完整的代码,你可以复制并粘贴到一个新的控制台应用程序项目:
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