ฉันต้องการสร้างไฟล์. 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 #
File.Open
มอบหมายภายในให้กับฟังก์ชั่น WinAPI (ดูความคิดเห็นถัดไป) หวังว่าจะป้องกันสภาพการแข่งขัน การแก้ปัญหาส่วนใหญ่ที่นี่ไม่ได้ทำและค่อนข้างชัดเจนภายใต้เงื่อนไขการแข่งขัน
if (file exists) { open file }
มักจะผิดเสมอในทุกภาษาโปรแกรม! สำหรับ. NET การแก้ปัญหาคือใช้File.Open(path, FileMode.Append, FileAccess.ReadWrite)
กับการตั้งค่าสถานะที่เหมาะสม