2017-10-24 5 views
1

목표는 TCP 서버에서 일부 텍스트 스트리밍을 가져 와서 .txt 파일 (또는 DB이지만, 지금은 txt 파일이 좋음)에 쓸 수있는 간단한 프로그램을 작성하는 것입니다. . 하지만 ... 아래 코드를 실행하려고하면 파일에 아무 것도 쓰지 않습니다. 파일은 비어 있고, while 루프를 제거한 경우에만 작동합니다. 제거하면 프로그램에서 "ciao"문자열을 파일에 씁니다. 그렇지 않으면 그는 그것을 쓰지도 않으며 예외를 던지지도 않습니다. 그것은 나를 미치게합니다 .... 어쨌든, 나는 그 일을 제대로하고 있습니까? 그것을 할 수있는 더 좋은 방법이 있습니까?TcpClient 및 StreamWriter 모두 사용시 오류가 발생했습니다.

감사합니다 !!! :)

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

당신은'당신의 작가를 .Flush' 할 수 있습니다 ... –

답변

0

그것은 단지 내가 while 루프를 제거하면

문제가 파일을 편집 모드에서 유지 만한다는 것입니다 날 것으로 보인다 작동 (및 서면 텍스트는 버퍼링) 및 결코 닫히지 마십시오.

몇 줄 뒤에 라인 읽기를 종료하면 어떻게됩니까? 파일에 기록됩니까? 나는 그것이 틀림 없음을 확신한다. 당신의 버퍼를 비우기 파일에 기록 중간 결과를 얻을 수 있으므로 sw.WriteLine(data); 후이를 넣어하는 옵션입니다 :

sw.Flush(); 
+0

와우, 작동 !!!! 정말 고맙습니다!! – stefano