C# 将多字节[]写入并读取到文件C中#

C# 将多字节[]写入并读取到文件C中#,c#,arrays,byte,delimiter,binaryfiles,C#,Arrays,Byte,Delimiter,Binaryfiles,我想将三字节数组写入该文件。然后,我需要用同样的方式来阅读。在C#中可能吗?。考虑下面的例子, byte[] source = new byte[0]; byte[] delim = new byte[0]; byte[] dest = new byte[0]; 所以,现在我计划将所有这些三字节数组与单个文件一起编写,如下所示 byte[] writeData = new byte[source.Length + delim.Length + dest.Length]; Buffer.Bloc

我想将三字节数组写入该文件。然后,我需要用同样的方式来阅读。在C#中可能吗?。考虑下面的例子,

byte[] source = new byte[0];
byte[] delim = new byte[0];
byte[] dest = new byte[0];
所以,现在我计划将所有这些三字节数组与单个文件一起编写,如下所示

byte[] writeData = new byte[source.Length + delim.Length + dest.Length];
Buffer.BlockCopy(source, 0, writeData, 0, source.Length);
Buffer.BlockCopy(delim, 0, writeData, source.Length, delim.Length);
Buffer.BlockCopy(dest, 0, writeData, source.Length + delim.Length, dest.Length);

File.WriteAllBytes("myfile.txt", writeData);
过了一段时间,我想读取文件并基于delim拆分源字节数组和目标字节数组。可能吗?。如果是,我如何做到这一点?任何示例代码都将不胜感激

提前感谢您的帮助。

您可以使用a和a,如下所示。首先将数组的长度写入int32,然后写入数组字节。对第二个数组重复此操作。反过来,将数组的长度读取为int32,然后读取那么多字节。对第二个阵列重复以下步骤:

byte[] source = new byte[2] { 1, 2 };
byte[] dest = new byte[6] { 2, 4, 8, 16, 32, 64 };

using (FileStream fs = new FileStream("myFile.txt", FileMode.OpenOrCreate))
{
    using (BinaryWriter bw = new BinaryWriter(fs))
    {
        bw.Write(source.Length);
        bw.Write(source, 0, source.Length);
        bw.Write(dest.Length);                    
        bw.Write(dest, 0, dest.Length);
    }                
}

byte[] source2;
byte[] dest2;
using (FileStream fs = new FileStream("myFile.txt", FileMode.Open))
{
    using (BinaryReader br = new BinaryReader(fs))
    {
        source2 = br.ReadBytes(br.ReadInt32());
        dest2 = br.ReadBytes(br.ReadInt32());
    }
}

Console.WriteLine("source = " + String.Join(" ", source));
Console.WriteLine("dest = " + String.Join(" ", dest));
Console.WriteLine("source2 = " + String.Join(" ", source2));
Console.WriteLine("dest2 = " + String.Join(" ", dest2));
输出:

source = 1 2
dest = 2 4 8 16 32 64
source2 = 1 2
dest2 = 2 4 8 16 32 64
您可以使用a和a,如下所示。首先将数组的长度写入int32,然后写入数组字节。对第二个数组重复此操作。反过来,将数组的长度读取为int32,然后读取那么多字节。对第二个阵列重复以下步骤:

byte[] source = new byte[2] { 1, 2 };
byte[] dest = new byte[6] { 2, 4, 8, 16, 32, 64 };

using (FileStream fs = new FileStream("myFile.txt", FileMode.OpenOrCreate))
{
    using (BinaryWriter bw = new BinaryWriter(fs))
    {
        bw.Write(source.Length);
        bw.Write(source, 0, source.Length);
        bw.Write(dest.Length);                    
        bw.Write(dest, 0, dest.Length);
    }                
}

byte[] source2;
byte[] dest2;
using (FileStream fs = new FileStream("myFile.txt", FileMode.Open))
{
    using (BinaryReader br = new BinaryReader(fs))
    {
        source2 = br.ReadBytes(br.ReadInt32());
        dest2 = br.ReadBytes(br.ReadInt32());
    }
}

Console.WriteLine("source = " + String.Join(" ", source));
Console.WriteLine("dest = " + String.Join(" ", dest));
Console.WriteLine("source2 = " + String.Join(" ", source2));
Console.WriteLine("dest2 = " + String.Join(" ", dest2));
输出:

source = 1 2
dest = 2 4 8 16 32 64
source2 = 1 2
dest2 = 2 4 8 16 32 64

你可以先写一些标题。例如,第一个
3*n
字节将具有写入文件的每个数组的编码长度(第一个
n
字节-第一个数组长度,第二个
n
字节-第二个数组长度,第三个
n
字节-第三个数组长度)。谢谢。感谢您的快速回复@guruston。我喜欢你的想法和工作,你可以先写一些标题。例如,第一个
3*n
字节将具有写入文件的每个数组的编码长度(第一个
n
字节-第一个数组长度,第二个
n
字节-第二个数组长度,第三个
n
字节-第三个数组长度)。谢谢。感谢您的快速回复@guruston。我喜欢你的想法和它的工作,让你如此“懒散”。这就是我想要的解决方案。再次感谢您的帮助。非常感谢您的“闲心”。这就是我想要的解决方案。再次感谢你的帮助。