Функция StreamReader ReadLine - PullRequest
1 голос
/ 06 мая 2011

Я использую функцию ReadLine объекта StreamReader для чтения десятичных значений из текстового файла.То, что я нахожу странным, это то, что некоторые значения имеют три знака после запятой всех нулей, то есть «-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:

По предложению Джона Сондерса, я попробовал его только сценность преступника, и вот, это обеспечило ценность, как первоначально представлено.Я предполагаю, что это может иметь какое-то отношение к форматированию исходного текстового файла, возможно, к каким-то скрытым символам, которые как-то влияют на то, как читается значение.Я знаю, что это необычный случай.

ОБНОВЛЕНИЕ 4:

Попытка изменения текстового файла в Notepad ++, удаление некоторых пробелов и сохранение.Читатель потока теперь читает это хорошо.Это была очень странная проблема, и я согласен со всеми, что ReadLine () не должен был этого делать.Возможно, это была просто случайность с моими настройками или с кодировкой текстового файла.

1 Ответ

0 голосов
/ 06 мая 2011

Почему бы вам не попробовать прочитать файл через FileStream как массив байтов?

byte[] fileContents = File.ReadAllBytes( @"c:\foo\bar\bazbat.txt" ) ;

Это должно быть какой-то проблемой кодирования (например, вы пытаетесь прочитать его как кодированный в кодировке UTF-8, а файл фактически закодирован с помощью другой кодировки.).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...