Ошибка работы с TcpClient и StreamWriter

Моя цель - написать простую программу, которая может получать поток текста с TCP-сервера и записать его в файл.txt (или в БД, но сейчас файл txt в порядке). Но... если я пытаюсь запустить приведенный ниже код, он просто ничего не записывает в файл. Файл остается пустым, он работает только в том случае, если я удаляю цикл while: если я удаляю его, программа записывает в файл строку "ciao". В противном случае он даже не пишет этого и не выдает никаких исключений. Это сводит меня с ума.... В любом случае, я делаю это правильно? Есть ли лучший способ сделать это?

Спасибо!!!:)

public static void Main()
{
    TcpClient client = new TcpClient();

    Console.WriteLine("In connessione.....");

    client.Connect("192.168.5.200", 4001);

    Console.WriteLine("Connesso");

    StreamReader sr = new StreamReader( client.GetStream() );

    string data = sr.ReadLine();

    using (StreamWriter sw = File.AppendText(@"C:\Users\Public\Documents\test.txt"))
    {
        sw.WriteLine("ciao");

        while (data != null)
        {
            Console.WriteLine(data);
            sw.WriteLine(data);
            data = sr.ReadLine();
        }
    }

}

1 ответ

Решение

это работает только если я уберу цикл while

Мне кажется, проблема в том, что файл остается в режиме редактирования (а записанный текст буферизируется) и никогда не записывается (при закрытии / удалении).

Попробуйте, что произойдет, если вы прекратите чтение строки после нескольких строк. Это записывается в файл? Я уверен, что это так. Очистка буфера - это опция для получения промежуточных результатов, записанных в файл, так что ставьте это после sw.WriteLine(data);:

sw.Flush();
Другие вопросы по тегам