Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在c中从二进制文件读取多个结构_C#_Struct - Fatal编程技术网

C# 在c中从二进制文件读取多个结构

C# 在c中从二进制文件读取多个结构,c#,struct,C#,Struct,我想在二进制文件中插入数据。数据是50结构。我想在二进制文件中将软音乐文件的功能保存为我可以使用的数据库 我为每首歌构建了一个结构,并将其插入到文件中。 结构包含: public struct s { public byte class_no; public int sample_no; public byte [] template; } 其中,模板是大小为4410的一维数组 我的文件现在包含50个结构,我想用二进制文件读取它,并在文件中创建所有结构的结构数组我将回

我想在二进制文件中插入数据。数据是50结构。我想在二进制文件中将软音乐文件的功能保存为我可以使用的数据库

我为每首歌构建了一个结构,并将其插入到文件中。 结构包含:

public struct  s {
    public byte class_no;
    public int sample_no;
    public byte [] template;
}
其中,模板是大小为4410的一维数组
我的文件现在包含50个结构,我想用二进制文件读取它,并在文件中创建所有结构的结构数组

我将回答从文件中读取多个结构

本例定义了一个用于保存数据的结构,您需要自己处理这些数据

所有这些都不是为您的特定需求而设计的,但作为一种通用方法,如何保存并读回您定义的结构列表

您可以复制并粘贴到新控制台应用程序项目中的完整代码:

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();
    }
}
}

什么样的数据库?或者您使用的是什么数据库产品?我想使用文本文件将软音乐的功能保存在文本文件中,好的,我保存了这些功能,但我想从文件中读取它们。换句话说。。我想从文件中读取一个结构并将其保存在二维数组中,每行包含一个从文件中读取的结构。我的问题是如何从文件中读取多个结构??您使用了什么代码将此结构保存到文件中?