2016-10-13 3 views
1

콘솔 응용 프로그램을 만들고 로그 파일을 설정하여 응용 프로그램의 활동을 추적하려고합니다. 이것이 내가 FileStream과 Writer를 설정하는 방법입니다.왜 Console.SetOut (StreamWriter)는 내 파일에 쓸 수 없습니까?

FileStream logstrm; 
StreamWriter logwriter; 
logstrm = new FileStream("file.txt", FileMode.OpenOrCreate, FileAccess.Write); 
logwriter = new StreamWriter(logstrm); 

측설를 호출하기 전에, 다음이 제대로 콘솔에 텍스트를 출력합니다.

Console.WriteLine("LOG FILES CREATED"); 

그러나, 일단 내가 다음을 수행, 나는 텍스트 file.txt를 위해 기록 할 것으로 예상,하지만 난 그것을 열 때 아무것도 파일에 존재하지 않는다.

Console.SetOut(logwriter); 
Console.WriteLine("TEXT EXPECTED TO BE IN FILE.TXT"); 

나는 완전히 완전히 잘못하고있는 것입니까?

+0

Close Stream - logwriter.Close() – Jivan

+0

Windows 디자이너의 의견을 듣기 위해 유닉스 문제인 google "getta byte, getta byte byte byte"가 있습니다. 그는 그것에 대해 거의 할 수 없었다. StreamWriter.AutoFlush 속성을 * true *로 설정하는 것은 사용자의 책임입니다. –

답변

0

는 단순히 파일을

logwriter.Close(); 

는 세척 사용 하나 출력 파일을 닫거나 닫지 마십시오

PS : 또 다른 테스트 : 당신은 당신이 내부 버퍼를 초과 할 때까지 콘솔에 계속해서 쓸 수 있습니다 크기를 확인한 다음 일부 문자가 파일에 쓰여지는 것을 볼 수 있습니다.

0

파일 I/O가 버퍼링되므로 실제로 파일에 쓰려면 플러시해야 할 수도 있습니다.

StreamWriter.Flush을 호출하여 명시 적으로 파일로 플러시 할 수 있습니다. 또는 Write를 호출 할 때마다 스트림이 플러시되도록 AutoFlush을 설정할 수 있습니다.

파일은 자동으로 Close에 플러시됩니다.