我无法修复数组的大小。我必须从文件中读取数据。当读取的字节数小于160时,数组MyPCMBuf
将更改为读取的字节大小。
byte[] MyPCMBuf;
MyPCMBuf = new byte[160];
BinaryReader reader = new BinaryReader(File.Open(fileNamein, FileMode.Open)) ;
Array.Clear (MyPCMBuf,0,160);
MyPCMBuf = reader.ReadBytes(160); //if bytes read =20 , size of MyPCMBuf becomes 20
发生了什么以及如何避免它?
答案 0 :(得分:4)
答案 1 :(得分:3)
你可以毫不费力地修复尺寸。
ReadBytes
返回一个新数组。那么简单。旧的永远不会改变大小。
如果您想使用缓冲区,请使用其他方法,例如:
public virtual int Read(
byte[] buffer,
int index,
int count
)
在那个班上。然后你保留你的阵列。
答案 2 :(得分:2)
根本不使用BinaryReader
。使用FileStream
返回的Open
并调用其Read
方法。如果您不指定MyPCMBuf
,则其长度不可能发生变化。
无关:使用Array.Clear (MyPCMBuf,0,MyPCMBuf.Length);
。减少冗余。错误的可能性较小。使用using
。如果您始终覆盖它,请不要初始化MyPCMBuf
。不要冗余地清除它。我在这看到很多误解。在编程方法上要更加严谨。您似乎并不了解您正在使用的所有语言功能和API。这很危险。
答案 3 :(得分:2)
您正在覆盖MyPCMBuf
行
MyPCMBuf = reader.ReadBytes(160);
因此,行MyPCMBuf = new byte[160];
与您的代码无关。
你并没有真正按照自己的想法去做。
答案 4 :(得分:0)
reader.ReadBytes(160)
将创建一个大小为160的新字节数组。它不会在您已有的数组中存储值。那个被发送到垃圾收集。