使用TcpClient和StreamWriter时出错

时间:2017-10-24 12:42:54

标签: c# 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 个答案:

答案 0 :(得分:0)

  

只有在我删除while循环时它才有效

在我看来,问题只是文件保持编辑模式(并且书面文本被缓冲)并且永远不会被写入(关闭/处置)。

尝试如果在几行后终止行读取会发生什么。是否写入文件?我确定是的。刷新缓冲区是一个选项,可以将中间结果写入文件,因此请在sw.WriteLine(data);之后添加:

sw.Flush();