.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");
답변
답변
StreamWriter를 시작하면 이전에 있던 텍스트보다 우선합니다. 다음과 같이 append 속성을 사용할 수 있습니다.
TextWriter t = new StreamWriter(path, true);