[C#] 존재하지 않고 새 줄을 추가하는 경우 .txt 파일을 만듭니다.

.txt 파일을 만들어서 쓰고 싶습니다. 파일이 이미 존재하면 더 많은 줄을 추가하고 싶습니다.

string path = @"E:\AppServ\Example.txt";
if (!File.Exists(path))
{
    File.Create(path);
    TextWriter tw = new StreamWriter(path);
    tw.WriteLine("The very first line!");
    tw.Close();
}
else if (File.Exists(path))
{
    TextWriter tw = new StreamWriter(path);
    tw.WriteLine("The next line!");
    tw.Close();
}

그러나 첫 번째 줄은 항상 덮어 쓰는 것 같습니다 … 같은 줄에 쓰지 않으려면 어떻게해야합니까 (루프에서 이것을 사용하고 있습니까)?

나는 그것이 매우 간단한 일이라는 것을 알고 있지만 WriteLine이전 에는 방법을 사용하지 않았습니다 . 저는 C #을 처음 접했습니다.



답변

올바른 생성자를 사용하십시오 .

else if (File.Exists(path))
{
    using(var tw = new StreamWriter(path, true))
    {
        tw.WriteLine("The next line!");
    }
}


답변

string path = @"E:\AppServ\Example.txt";
File.AppendAllLines(path, new [] { "The very first line!" });

File.AppendAllText ()도 참조하십시오. AppendAllLines는 줄을 직접 넣지 않아도 각 줄에 개행을 추가합니다.

두 가지 방법 모두 파일이 존재하지 않으면 파일을 작성하므로 필요하지 않습니다.


답변

string path=@"E:\AppServ\Example.txt";

if(!File.Exists(path))
{
   File.Create(path).Dispose();

   using( TextWriter tw = new StreamWriter(path))
   {
      tw.WriteLine("The very first line!");
   }

}
else if (File.Exists(path))
{
   using(TextWriter tw = new StreamWriter(path))
   {
      tw.WriteLine("The next line!");
   }
}


답변

StreamWriter가 자동으로 파일을 존재하는지 확인할 필요가 없습니다. 추가 모드에서 파일을 열면 파일이 존재하지 않으면 파일이 만들어지며 항상 추가하고 덮어 쓰지 않습니다. 따라서 초기 점검은 중복됩니다.

TextWriter tw = new StreamWriter(path, true);
tw.WriteLine("The next line!");
tw.Close(); 


답변

File.AppendAllText는 파일에 문자열을 추가합니다. 파일이 없으면 텍스트 파일도 작성합니다. 내용을 읽을 필요가 없으면 매우 효율적입니다. 유스 케이스가 로깅 중입니다.

File.AppendAllText("C:\\log.txt", "hello world\n");


답변

“추가”모드에서 파일을 열기 만하면됩니다.

http://msdn.microsoft.com/en-us/library/3zc0w663.aspx


답변

StreamWriter를 시작하면 이전에 있던 텍스트보다 우선합니다. 다음과 같이 append 속성을 사용할 수 있습니다.

TextWriter t = new StreamWriter(path, true);