Ошибка работы с 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();