gpt4 book ai didi

c# - 从文件中读取多个字节数组

转载 作者:太空宇宙 更新时间:2023-11-03 19:46:52 24 4
gpt4 key购买 nike

如何从文件中读取多个字节数组?这些字节数组是图像,可能会很大。

这就是我将它们添加到文件中的方式:

 using (var stream = new FileStream(tempFile, FileMode.Append))
{
//convertedImage = one byte array
stream.Write(convertedImage, 0, convertedImage.Length);
}

所以,现在他们在 tempFile而且我不知道如何将它们作为单独的数组检索。理想情况下,我希望将它们作为 IEnumerable<byte[]> 获取。 .有没有办法拆分这些,也许?

最佳答案

要检索多组字节数组,需要在读取时知道长度。最简单的方法(如果您可以更改编写代码)是添加一个长度值:

using (var stream = new FileStream(tempFile, FileMode.Append))
{
//convertedImage = one byte array
// All ints are 4-bytes
stream.Write(BitConverter.GetBytes(convertedImage.Length), 0, 4);
// now, we can write the buffer
stream.Write(convertedImage, 0, convertedImage.Length);
}

然后是读取数据

using (var stream = new FileStream(tempFile, FileMode.Open))
{
// loop until we can't read any more
while (true)
{
byte[] convertedImage;
// All ints are 4-bytes
int size;
byte[] sizeBytes = new byte[4];
// Read size
int numRead = stream.Read(sizeBytes, 0, 4);
if (numRead <= 0) {
break;
}
// Convert to int
size = BitConverter.ToInt32(sizeBytes, 0);
// Allocate the buffer
convertedImage = new byte[size];
stream.Read(convertedImage, 0, size);
// Do what you will with the array
listOfArrays.Add(convertedImage);
} // end while
}

如果所有保存的图像大小相同,那么您可以消除每个图像的第一次读写调用,并将 size 硬编码为数组的大小。

关于c# - 从文件中读取多个字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44440970/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com