这不是我的代码。我应该弄清楚发生了什么。 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);
}
}
答案 0 :(得分:2)
基本上它将FileMode.Open中的文件流打开到指定文件(pathToPK)。使用所述fileStream然后打开一个二进制读取器来读取原始字节并创建一个新的MemoryStream来复制binaryContent。
然后,它继续以1024字节的块读取整个文件。 BinaryReader的读取方法返回读取的字节数,因此您可以将条件读取为“读取器读取至少1个字节(并尝试读取多达1024个)”。
最后,它会根据整个文件的内存流创建一个新的byte []到整个文件的长度,并将整个内容实际复制到sk中
答案 1 :(得分:1)
它以非常复杂的方式进行sk = File.ReadAllBytes(pathToPK);
。