Моя система создает текстовый файл при первом нажатии кнопки программы и добавляет к нему различные вещи при нажатии других кнопок. В идеале все должно быть сохранено в конце, но поскольку это система мониторинга, использующая таймер, некоторые данные необходимо записывать в файл в определенное время, иначе они будут потеряны.
При нажатии первой кнопки (btnStart) программа находит/создает основную папку (имя которой дается с помощью постоянной строки) и находит/создает вложенную папку (используя текст, введенный в текстовые поля комбинации до нажатия кнопки). устанавливает каталог для текстового файла, как показано ниже в строке (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 в первой строке функции. Это привело к ошибке во время выполнения, которая сообщила мне, что текстовый файл не может быть открыт, так как он уже был открыт другим процессом.
Поскольку я добавил «настоящую» перегрузку, система работала нормально, но я только что столкнулся с проблемой, заключающейся в том, что после создания текстового файла его нельзя перезаписать, как это обычно делает текстовый файл с помощью StreamWriter, использующего тот же путь.
Мне нужно иметь возможность перезаписывать файлы, поскольку они устаревают через некоторое время и нуждаются в замене. Кто-нибудь знает, куда я могу пойти отсюда, чтобы решить эту проблему?
Спасибо, Марк