BinaryReader和while语句运算符

时间:2014-10-21 20:50:59

标签: c# binaryreader binary-serialization

这不是我的代码。我应该弄清楚发生了什么。 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);
            }
        }

2 个答案:

答案 0 :(得分:2)

基本上它将FileMode.Open中的文件流打开到指定文件(pathToPK)。使用所述fileStream然后打开一个二进制读取器来读取原始字节并创建一个新的MemoryStream来复制binaryContent。

然后,它继续以1024字节的块读取整个文件。 BinaryReader的读取方法返回读取的字节数,因此您可以将条件读取为“读取器读取至少1个字节(并尝试读取多达1024个)”。

最后,它会根据整个文件的内存流创建一个新的byte []到整个文件的长度,并将整个内容实际复制到sk中

答案 1 :(得分:1)

它以非常复杂的方式进行sk = File.ReadAllBytes(pathToPK);