Как я могу прочитать несколько текстовых файлов и сохранить их в TextBox? - PullRequest
1 голос
/ 22 ноября 2011

Я ударил умственную стену. По сути, этот код должен выполнять и собирать все текстовые файлы, которые у меня есть в папке (и в конечном итоге обновлять текстовое поле каждые 10 секунд). На данный момент он будет извлекать текст только из одного или двух файлов одновременно, и это будет все. Это не будет обновлять это textbox3 либо. Мне было интересно, есть ли у кого-нибудь идеи, почему это происходит?

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

public void read()
{
    string[] filePaths = Directory.GetFiles(@"U:\My Documents\chat\", "*.txt",
                                     SearchOption.AllDirectories);

    foreach (string file in filePaths)
    {
        TextReader objstream = new StreamReader(file);

        textBox3.Text = objstream.ReadToEnd();

        objstream.Close();

        textBox3.Select(textBox3.Text.Length, 0);
        textBox3.ScrollToCaret(); 

        break;
    }
}

Ответы [ 3 ]

2 голосов
/ 22 ноября 2011

Если вам не нужно так сильно вмешиваться в поток, я бы просто использовал метод статического класса System.IO.File для чтения и возврата всего текста.Используя это и AppendText, вы можете объединить его в одно утверждение.Тем не менее, я бы порекомендовал установить там некоторые исключения для чтения файла.

string[] filePaths = Directory.GetFiles(@"U:\My Documents\chat\", "*.txt", SearchOption.AllDirectories);  
foreach (string file in filePaths)
  textBox3.AppendText(System.IO.File.ReadAllText(file));
1 голос
/ 22 ноября 2011

Можно также попробовать

textBox3.AppendText(objstream.ReadToEnd());

Здесь следует иметь в виду одну вещь: кодирование файлов. Если код файла не UTF-8, он может по-разному отображаться в текстовом поле и в текстовом редакторе.

Надеюсь, это поможет

0 голосов
/ 22 ноября 2011

вместо

textBox3.Text = objstream.ReadToEnd(); 

try

textBox3.Text += objstream.ReadToEnd(); 

edit 1: если вы хотите обновить это текстовое поле, не забудьте очистить его текст перед обновлением.(textBox3.Text = "" будет делать).Вы также можете поместить эту строку в начало read().

edit 2: удалить строку break; в цикле for ... each.

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