我使用StreamReader对象的ReadLine函数从文本文件中读取十进制值。我发现奇怪的是一些值有三个小数位都是零,即"-93.000",但当我调试时,我注意到流读取器只会读取前一个值为"-93.00“。我不确定为什么会发生这种情况,它将读取带有两个小数位全零的值,即"-85.00",就可以了。为了验证目的,我需要能够读取整个值,否则我的程序中会报告不准确的结果。
你知道为什么会发生这种行为吗?有没有其他方法可以解析文本文件来保留原始字符串??谢谢。
更新:
读取文本文件的代码
string Line = sr.ReadLine();文本文件中的示例值:
-93.000 {\Tab}
-99.99 {\Tab}
-85.00读取第一行后的行变量:
Line = "-93.00\t
-99.99\t
-85.00"更新2:
在过去的一个小时里,我已经经历过几次了。我试着观察这条线是在哪里设置的,这就是我缩小到的范围。为了确保这一点,我将再次梳理代码。我还将查看文本文件的格式,因为它是由外部源提供给我的。
更新3:
根据John Saunders的建议,我尝试了一下,结果发现它提供了最初提供的值。我猜这可能与原始文本文件的格式化方式有关,可能是一些隐藏字符以某种方式影响了值的读取方式。我知道这是一个不寻常的案例。
更新4:
已尝试在Notepad++中修改文本文件,删除了一些空格并重新保存。流阅读器现在可以很好地读取它。这是一个非常奇怪的问题,我同意其他人的观点,即ReadLine()不应该这样做。也许这也只是我的设置或文本文件编码的一个偶然事件。
发布于 2011-05-07 01:21:28
为什么不尝试通过FileStream读取字节数组形式的文件呢?
byte[] fileContents = File.ReadAllBytes( @"c:\foo\bar\bazbat.txt" ) ;这肯定是某种编码问题(例如,您试图将其读取为UTF-8编码的文本,而该文件实际上是使用某种其他编码进行编码的)。
https://stackoverflow.com/questions/5914495
复制相似问题