FileStream
이있는 StreamWriter
을 사용하여 .NET 4.5의 기존 파일에 텍스트를 추가 할 때 흥미로운 점이 생겼습니다 (이전 프레임 워크는 사용하지 않았습니다). 나는 두 가지 방법을 시도했다. 하나는 효과가 있었고 하나는 그렇지 못했다. 나는 둘의 차이가 무엇인지 궁금 하네. 나는 그것이 응용 프로그램이 완전히 파일을 닫습니다 수 있도록하는 가장 좋은 방법이 있다는 개인적인 경험을 통해 발견했기 때문에StreamWriter 및 FileStream을 사용하여 txt 파일에 쓰기
두 방법은 상단
if (!File.Exists(filepath))
using (File.Create(filepath));
나는 using
문에서 생성을에서 다음 코드를 포함 .
비 작동 방법 :이 방법 아무 것도
using (FileStream f = new FileStream(filepath, FileMode.Append,FileAccess.Write))
(new StreamWriter(f)).WriteLine("somestring");
이 파일에 추가되고 끝납니다.
작업 방법 :
나는 매우를 검색하고, 정보를 아무것도 발견하지 않았습니다 모르고, 인터넷 검색을 조금 해봤using (FileStream f = new FileStream(filepath, FileMode.Append,FileAccess.Write))
using (StreamWriter s = new StreamWriter(f))
s.WriteLine("somestring");
. 그래서 익명의 사람 StreamWriter
이 (익명 아닌?) StreamWriter
이 작동하지 않는 이유는 무엇입니까?
가 나는'StreamWriter'가 실제로 암시 자동으로 플러시합니다'using' 블록을 사용하여 호출되는 플러시와'Dispose' 방법까지 아무것도 _write_ 않습니다 같은데요. 편집 : 참고 : 'StreamWriter'에는이 동작을 제어 할 수있는 [AutoFlush] (http://msdn.microsoft.com/en-us/library/system.io.streamwriter.autoflush.aspx) 속성이 있습니다. 쓰기를 할 때마다 스트림을 플러시합니다. 기본적으로 'false'라고 추측합니다. –
이것은 이미 답변되었지만 왜 그런 형식의 코드를 원하십니까? IMO를 읽고 이해하는 것은 끔찍한 일이며 간단한 서식 오류를 통해 버그를 도입함으로써 위험이 증가합니다. 저는 항상 중괄호를 열었습니다. – TheCodeKing
@TheCodeKing 이미 답변이 되었더라도 링크를 제공 하시겠습니까? 나는 정직하게 그것을 찾았고 게시하기 전에 모든 제안 된 답변을 보았고 (주로 익명의 기능을 사용했기 때문에) 답변을 찾지 못한 것을 보았습니다. 또한 나는 가장 많은 것들을 토론하기 위해 여기에와 있지 않습니다. 부분적인 문체와 선호도를 기반으로합니다. 실제로 요구되지 않는 중괄호로 흩어져있는 IMO 코드는 읽기가 더 어렵습니다. –