2016-09-23 1 views
1

프로세스 스트림의 데이터를 로그 파일에 쓰는 스트림 작성자가 있습니다.Streamwriter가 ConsoleWriteLine()과 씁니다.

INFO: Connected 
:38 AM hudson.remoting.jnlp.Main$CuiListener status 
LP3-connect 
6231dd with ID 
ad is recommended. 

내 코드는 다음과 같습니다 :

static void ShowOutput(string data) 
    { 
     if (data != null) 
     { 
      FileStream fileStream = new FileStream(@"c:\temp\LogFile.txt", FileMode.OpenOrCreate, FileAccess.Write); 
      Console.WriteLine("SW DATA = " + data); 
      using (StreamWriter w = new StreamWriter(fileStream)) 
      { 
       w.WriteLine(data); 
       w.Flush(); 
      } 
      fileStream.Close(); 
     } 
    } 

그것은 보이는 내가 TEXTFILE을 열 때, 그것은처럼 보이는

SW DATA = Sep 23, 2016 9:40:37 AM hudson.remoting.jnlp.Main$CuiListener status 
SW DATA = INFO: Trying protocol: JNLP3-connect 
SW DATA = Sep 23, 2016 9:40:38 AM hudson.remoting.jnlp.Main$CuiListener status 
SW DATA = INFO: Server didn't accept the handshake: Unknown protocol:Protocol:JNLP3-connect 
SW DATA = Sep 23, 2016 9:40:38 AM hudson.remoting.jnlp.Main$CuiListener status 
SW DATA = INFO: Connecting to Machine:51136 
SW DATA = Sep 23, 2016 9:40:38 AM hudson.remoting.jnlp.Main$CuiListener status 
SW DATA = INFO: Trying protocol: JNLP2-connect 
SW DATA = Sep 23, 2016 9:40:38 AM hudson.remoting.jnlp.Main$CuiListener status 
SW DATA = INFO: Connected 

: 나는 Console.WriteLine()으로 출력을 표시 할 때와 같은 결과가 보인다 작가처럼 모든 라인의 끝 부분 만 씁니다.

데이터는 다음과 유사한 콘솔 프로세스에서 온다 :

http://www.codeproject.com/Articles/4665/Launching-a-process-and-displaying-its-standard-ou

내 질문은 :

나는이 어떻게

방지 할 수 ?

+1

왜'''File.AppendAllText'''가 아닌가? – tym32167

답변

4

작가는 모든 라인의 끝 부분 만 쓰는 것처럼 보입니다.

이전의 내용을 덮어 쓸 때마다 파일을 다시 열어 놓기 때문입니다. 파일을 ShowOutput으로 호출 할 때 열어 두거나 Append 모드로 열어야합니다.

파일의 혼합 된 내용은 파일의 시작 부분을 덮어 쓰므로 (자르지 않음) 이전 항목보다 짧은 로그 항목을 작성하면 이전 텍스트의 끝 부분 유적.

+0

그래, 그런데 왜 이런 일이 생길까? 나는이 방법이 느리고 최적이 아니라는 것을 안다. 그러나 그것은 작동해야한다. –

+1

파일을 다시 열면, 스트림이 쓸 위치는 매번 위치 0에 있기 때문에. 파일에 쓰는 모든 행은 파일의 시작 부분부터 작성됩니다. 근본적으로 이전 줄의 시작 부분을 덮어 씁니다. 새 줄이 짧으면 이전 줄의 비트와 조각을 매달아 놓습니다. 끝에 새 줄을 추가하려면 추가 할 파일을 열려면 실제로 .NET에 알려야합니다. –

+0

좋아, 이제 알겠지만 작성자가 파일을 추가하기 위해 열지 않고 있습니다 ... 설명해 주셔서 감사합니다. –