同时使用 TcpClient 和 StreamWriter 时出错

Error working with both TcpClient and 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();
        }
    }

}

it only works if I remove the while loop

在我看来,问题只是文件处于编辑模式(并且写入的文本被缓冲)并且永远不会被写入(close/dispose)。

试试如果你在读几行后终止行会发生什么。它会写入文件吗?我确定是的。刷新缓冲区是将中间结果写入文件的一个选项,因此将其放在 sw.WriteLine(data);:

之后
sw.Flush();