关于C#BinaryReader类内部实现方法(扩展)
简单了解内存流第一步(不懂可以翻我另一篇文章有解释)
假设目前我有一个数组A = {11,22,33}
我将他写入内存流中,
此时内存流内部存储的数据实际上是
3 // 数组的长度
11 // 第一个整数值
22 // 第二个整数值
33 // 第三个整数值
然后我们调用的时候binaryReader.ReadInt32()
第一次我们会获取的是3(长度)
然后我们再调用binaryReader.ReadInt32()
这就是第二次调用了,获取的就是11(相当于数组[0])
下面是实际获取方法
int length = binaryReader.ReadInt32(); // 读取数组的长度
int[] intArray = new int[length]; // 创建一个长度为 length 的整数数组
for (int i = 0; i < length; i++)
{
intArray[i] = binaryReader.ReadInt32(); // 读取数组中的每个整数值
}
扩展了解内存流第二步
假设目前我有一个数组A = {11,22,33},数组B = {55,66,77}写入”内存流“中
此时我第一次调用获取方法的时候,只能获取A数组
binaryReader会记录获取的位置(下标)
这么说把,内存流内部实际存储的是3,11,22,33,3,55,66,77
我们在用上面的方法int length = binaryReader.ReadInt32(); // 读取数组的长度
这样就不会读到第二个数组的了
扩展了解文件流存储第三步
假设目前我有一个数组A = {11,22,33},数组B = {55,66,77}写入“文件流”中
此时需要自己把头(数组长度写进去,也可以不写)
using (BinaryWriter binaryWriter = new BinaryWriter(File.Open("data.bin", FileMode.Create)))
{
// 写入数组A的长度和元素
int lengthA = A.Length;
binaryWriter.Write(lengthA);
foreach (int element in A)
{
binaryWriter.Write(element);
}
// 写入数组B的长度和元素
int lengthB = B.Length;
binaryWriter.Write(lengthB);
foreach (int element in B)
{
binaryWriter.Write(element);
}
}