C# c-显示值65536(“.”)的流结束读取器

C# c-显示值65536(“.”)的流结束读取器,c#,.net,filestream,streamreader,C#,.net,Filestream,Streamreader,我创建了一个使用文件流的StreamReader。在StreamReader方法的末尾,当使用Peek方法时,我看到数值65535。当转换为字符表示句点“.”时,使用VS中的“watch”可以看到已到达EndOfStream。65535“.”值是什么意思?句号“.”是ASCII对应的吗 我以为我听说“0”表示文件/流的结尾 注意:如果流正在使用文件,我不确定流的EOF和EOS端之间是否有差异 //Contains some business logic, main focus is on the

我创建了一个使用文件流的StreamReader。在StreamReader方法的末尾,当使用Peek方法时,我看到数值65535。当转换为字符表示句点“.”时,使用VS中的“watch”可以看到已到达EndOfStream。65535“.”值是什么意思?句号“.”是ASCII对应的吗

我以为我听说“0”表示文件/流的结尾

注意:如果流正在使用文件,我不确定流的EOF和EOS端之间是否有差异

//Contains some business logic, main focus is on the while loop expression
    try
            {
                //The peek method is used to avoid moving the Stream's position.  
                //If we don't encounter a number character representing the RDW, keep reading until we find one.
                while (!Char.IsDigit((char)this.StreamReader.Peek()))
                {
                    if (!this.StreamReader.EndOfStream)
                        this.StreamReader.Read();
                    else
                        return false;
                }
                //Loop completed and found the next record without encountering the end of the stream
                return true;
            }
            catch (IOException IOex)
            {
                throw new Exception(String.Format("An IO Exception occured when attempting to set the start position of the record.\n\n{0}", IOex.ToString()));
            }
这意味着您已将StreamReader.Read的StreamReader.Peek的结果强制转换为char,然后再检查它是否为-1意味着它是流的结束。首先检查Peek的返回值,如果是-1则停止

请注意,流的逻辑端可能不同于流的实际端。当你到达一个空字符时,你可能会认为流会结束,但是没有人说它必须达到这个值,而且没有人说它不能有更多的数据。所以要小心你在和哪一个合作

哦,如果你想知道为什么是65535,那就是2^16-1,十六进制的0xFFFF。如果将-1(0xFFFFFFFF)强制转换为一个字符,则得到的结果。

这意味着您已将StreamReader.Read'sStreamReader.Peek的结果强制转换为char,然后检查它是否为-1表示流结束。首先检查Peek的返回值,如果是-1则停止

请注意,流的逻辑端可能不同于流的实际端。当你到达一个空字符时,你可能会认为流会结束,但是没有人说它必须达到这个值,而且没有人说它不能有更多的数据。所以要小心你在和哪一个合作


哦,如果你想知道为什么是65535,那就是2^16-1,十六进制的0xFFFF。如果您将-1(0xFFFFFFFF)强制转换为一个字符,您将得到这个结果。

它看起来像某种溢出,您可以发布您如何读取流吗?它看起来像某种溢出,可以发布你读流的方式吗?流读取器.EndoFoSt流属性检查流的逻辑结尾还是流的实际结尾?逻辑端只是你认为是数据的结尾,但是计算机在确定流的结尾时不看数据本身。如果它只是耗尽了更多的数据,那么它就结束了;它只检查流的物理端。它只有2^16-1。我们说的是16位和0xFFFF@xanatos:哎呀,我的错。谢谢流读取器.EndoFoSt流属性检查流的逻辑端还是流的实际端?逻辑端仅是您认为是数据的结尾,但是计算机在确定流结束时不看数据本身。如果它只是耗尽了更多的数据,那么它就结束了;它只检查流的物理端。它只有2^16-1。我们说的是16位和0xFFFF@xanatos:哎呀,我的错。谢谢