locked
Вывод строк текста из .txt документа на TextBlock RRS feed

  • Вопрос

  • Всем привет!

    Страница приложения с TextBlock и Button, так же задействован .txt документ с текстом (Предложения, каждое предложение на одной строке, всего порядка 100 строк). При нажатии на Button предложение(первая строка из документа) выводится на TextBlock:

    public string GetQ()
            {
                string pathFile = "Q.txt";
                Uri uri = new Uri(pathFile, UriKind.Relative); 
                StreamResourceInfo sri = Application.GetResourceStream(uri);
                using (StreamReader sr = new StreamReader(sri.Stream))
                {
                    string wordline = sr.ReadLine();
                    return wordline;
                }
    
            }

    Как сделать, чтобы при следующем нажатии на Button, выводилась следующая строка из документа?

    Всем заранее благодарен за ответы!

    25 июня 2012 г. 17:06

Ответы

  • Ваш метод выполняет слишком много работы. Кроме чтения самой строки, Вы каждый раз заново инициализирует StreamReader. Разделите метод на 2: в первом - создавайте StreamReader, во втором - считывайте строку. Что-то вроде этого:
    StreamReader sr;
    
    private void CreateStream()
    {
         string pathFile = "Q.txt";
         Uri uri = new Uri(pathFile, UriKind.Relative); 
         StreamResourceInfo sri = Application.GetResourceStream(uri);
         sr = new StreamReader(sri.Stream);         
     }
    
    private string GetLine()
    {
         return sr.ReadLine();
    }



    • Изменено Alexey Arefiev 26 июня 2012 г. 4:26
    • Предложено в качестве ответа Alexey Arefiev 26 июня 2012 г. 4:27
    • Помечено в качестве ответа Abolmasov Dmitry 28 июня 2012 г. 8:42
    26 июня 2012 г. 4:24

Все ответы

  • Ваш метод выполняет слишком много работы. Кроме чтения самой строки, Вы каждый раз заново инициализирует StreamReader. Разделите метод на 2: в первом - создавайте StreamReader, во втором - считывайте строку. Что-то вроде этого:
    StreamReader sr;
    
    private void CreateStream()
    {
         string pathFile = "Q.txt";
         Uri uri = new Uri(pathFile, UriKind.Relative); 
         StreamResourceInfo sri = Application.GetResourceStream(uri);
         sr = new StreamReader(sri.Stream);         
     }
    
    private string GetLine()
    {
         return sr.ReadLine();
    }



    • Изменено Alexey Arefiev 26 июня 2012 г. 4:26
    • Предложено в качестве ответа Alexey Arefiev 26 июня 2012 г. 4:27
    • Помечено в качестве ответа Abolmasov Dmitry 28 июня 2012 г. 8:42
    26 июня 2012 г. 4:24
  • И не забыть при этом при завершении приложения закрыть StreamReader.

    Если строк в файле относительно немного, то можно их считать в массив строк и работать после уже с ним.


    Для связи [mail]

    26 июня 2012 г. 6:56
  • Спасибо за ответ!

    А как считать следующую строку и так далее пока не кончится документ?

    26 июня 2012 г. 9:07
  • Пока возвращаются строки, значит не конец файла, как только вернулся null, значит вы дочитали до конца. Посмотрите здесь.

    26 июня 2012 г. 9:15
    Отвечающий