BinaryReader和while语句运算符
本文关键字:运算符 语句 while BinaryReader | 更新日期: 2023-09-27 18:27:25
这不是我的代码。我应该弄清楚发生了什么。while语句中的行是我感到困惑的地方。它想说的都是读到文件末尾。我不明白它是如何计算为某个整数进行比较的。
using (FileStream fs = File.Open(pathToPK, FileMode.Open))
{
BinaryReader br = new BinaryReader(fs);
using (MemoryStream ms = new MemoryStream())
{
byte[] buffer = new byte[1024];
int read = 0;
while ((read = br.Read(buffer, 0, 1024)) > 0) //don't understand this line
{
ms.Write(buffer, 0, read);
}
sk = new byte[ms.ToArray().Length]; //sk is a byte[]
ms.ToArray().CopyTo(sk, 0);
}
}
基本上是在FileMode中打开文件流。打开到指定的文件(pathToPK)。使用所述fileStream,它打开一个二进制读取器来读取原始字节,并创建一个新的MemoryStream来复制二进制内容。
然后,它继续按1024字节的块读取整个文件。BinaryReader的Read方法返回读取的字节数,因此您可以将条件读取为"当读取器读取至少1个字节(并尝试读取多达1024个字节)时"。
最后,它将根据复制到的内存流创建一个新的字节[],其长度相当于整个文件的长度,并实际将整个内容复制到sk 中
它以一种非常复杂的方式执行sk = File.ReadAllBytes(pathToPK);
。