[C#] StreamWriter를 사용하여 파일에 줄 추가

파일에 줄을 추가하고 싶습니다. StreamWriter를 사용하고 있습니다.

StreamWriter file2 = new StreamWriter(@"c:\file.txt");
file2.WriteLine(someString);
file2.Close();

내 파일의 출력은 서로 아래에 여러 문자열이어야하지만이 코드를 실행할 때마다 덮어 쓰는 행이 하나뿐입니다.

StreamWriter가 기존 파일에 추가 할 수있는 방법이 있습니까?



답변

대신 이것을 사용하십시오 :

new StreamWriter("c:\\file.txt", true);

이 StreamWriter 생성자 오버로드로 파일을 추가하거나 덮어 쓸 것인지 선택합니다.

C # 4 이상은 다음 구문을 제공하며 일부 구문은 더 읽기 쉽습니다.

new StreamWriter("c:\\file.txt", append: true);


답변

 using (FileStream fs = new FileStream(fileName,FileMode.Append, FileAccess.Write))
 using (StreamWriter sw = new StreamWriter(fs))
 {
    sw.WriteLine(something);
 }


답변

파일에 무언가를 쓸 때마다 위의 모든 코드를 실행한다고 가정 합니다. 파일의 스트림이 열릴 때마다 탐색 포인터가 시작 부분에 위치하므로 모든 쓰기가 이전의 내용을 덮어 씁니다.

두 가지 방법으로 문제를 해결할 수 있습니다.

file2 = new StreamWriter("c:/file.txt", true);

또는 스트림 포인터를 명시 적으로 재배치하여 :

file2 = new StreamWriter("c:/file.txt");
file2.BaseStream.Seek(0, SeekOrigin.End);


답변

이 시도:

StreamWriter file2 = new StreamWriter(@"c:\file.txt", true);
file2.WriteLine(someString);
file2.Close();


답변

이것을 교체하십시오 :

StreamWriter file2 = new StreamWriter("c:/file.txt");

이것으로 :

StreamWriter file2 = new StreamWriter("c:/file.txt", true);

true 텍스트를 추가 함을 나타냅니다.


답변

StreamWriter생성자 를 두 번째 매개 변수-와 함께 사용하십시오 true.


답변

다른 옵션은 System.IO.File.AppendText를 사용하는 것 입니다

이것은 다른 사람들이 제공 한 StreamWriter 오버로드와 동일합니다.

또한 File.AppendAllText 는 스트림을 열고 닫을 염려없이 약간 더 쉬운 인터페이스를 제공 할 수 있습니다. 그런 다음 자신의 줄 바꿈을 넣는 것에 대해 걱정해야 할 수도 있습니다. 🙂