同时使用 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();
我的目标是编写一个简单的程序,可以从 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();