我的系统在程序的第一个按钮上创建一个文本文件,并在其他按钮点击时附加各种内容。理想情况下,所有内容都将在最后保存,但由于它是一个使用计时器的监控系统,因此某些数据需要在特定时间写入文件,否则将丢失。
单击第一个按钮(btnStart),程序找到/创建主文件夹(使用常量字符串给出名称)并定位/创建子文件夹(使用在按钮之前输入组合文本框中的文本)单击)这将设置文本文件的目录,如下所示string(fileName):
private void createDirectory()
{ //create output file in this folder using owner name and current date
//main folder path (contains all files output from system)
string rootDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\Horse Monitoring Records";
//sub folder path (each patient has individual subfolder)
string subDirectory = rootDirectory + "\\" + txtPatName.Text + "/" + txtOwnerName.Text;
//file name (patient has file created for each operation)
fileName = subDirectory + "\\" + txtOwnerName.Text + "/(" + DateTime.Now.Date.ToString("dd-MM-yyyy") + ").txt";
if (!Directory.Exists(rootDirectory)) //if main folder does not exist...
{
Directory.CreateDirectory(rootDirectory); //create it in My Documents
}
if (!Directory.Exists(subDirectory)) //if patient sub folder does not exist...
{
Directory.CreateDirectory(subDirectory); //create it in Patient-Owner format
}
}
调用的下一个函数将第一个文本写入文件,如下所示:
private void saveFileDetails()
{
//Once case details have been entered, create new file using these details and add data input structure
StreamWriter consoleFile = new StreamWriter(fileName, true);
consoleFile.WriteLine("------------------------------------------- Case Details -------------------------------------------");
consoleFile.WriteLine("\n\n");
//patient and vet details
...
}
最初当我设置此函数时,我没有在函数的第一行中包含StreamWriter的'true'重载。这导致运行时错误,告诉我文本文件无法打开,因为它已被另一个进程打开。
由于我添加了'true'重载,系统工作正常,但我刚刚遇到一个问题,一旦创建了一个文本文件,它就不会被StreamWriter使用的文本文件覆盖。同样的道路。
我确实需要能够覆盖文件,因为它们在一段时间后变得过时并需要被替换,是否有人知道我可以从哪里解决这个问题?
谢谢, 标记
答案 0 :(得分:0)
StreamWriter带有布尔值的重载详细here。 true使其附加内容。如果您总是想要覆盖该文件,则可以使用File.OpenWrite;我相信你也可以将它传递给构造函数,如下所示:
V
详细了解File.OpenWrite和FIleMode。如果你想使用它,File.OpenWrite可以自己完成这项工作。但我相信,因为File.OpenWrite返回FIleStream,可以将其传递给StreamWriter构造函数。