我的目标是编写一个简单的程序,可以从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();
}
}
}
答案 0 :(得分:0)
只有在我删除while循环时它才有效
在我看来,问题只是文件保持编辑模式(并且书面文本被缓冲)并且永远不会被写入(关闭/处置)。
尝试如果在几行后终止行读取会发生什么。是否写入文件?我确定是的。刷新缓冲区是一个选项,可以将中间结果写入文件,因此请在sw.WriteLine(data);
之后添加:
sw.Flush();