C # streamreader читает данные несколько раз - PullRequest
0 голосов
/ 13 мая 2019

У меня есть этот код:

  using (StreamReader csvreader = new StreamReader(fuFiles.FileContent))
            {
                while (!csvreader.EndOfStream)
                {
                  //reading data
                }
            }

Я использую это в двух разных функциях.В первой функции значение EndOfStream равно false, и данные могут быть прочитаны правильно.Во второй функции этот же тип кода говорит, что EndOfStream имеет значение true, и я не могу читать данные.Я создаю объекты потокового чтения самостоятельно.

Редактировать

Я добавляю еще одну строку объяснения, когда я комментирую первый метод, тогда я могу прочитать данные во втором методе.

Есть что-то, что я делаю не так?

Ответы [ 2 ]

3 голосов
/ 13 мая 2019

Есть только два конструктора для StreamReader, которые принимают один параметр.Поскольку «FileContent», вероятно, не является строкой, это должен быть какой-то поток.Первый раз, когда он прочитан, оставлен в конце.Поэтому вы должны либо сбросить его в начало (если это позволяет), либо сделать копию перед чтением, либо создать новую.

1 голос
/ 13 мая 2019

Судя по именам переменных в предоставленном вами коде, похоже, что вы передаете содержимое файла конструктору StreamReader.Однако этот конструктор принимает путь к файлу для чтения, а не его содержимое.

Вы можете использовать класс StringReader для использования потокачитать из строки, если это то, что вы хотите сделать.

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