#c#
#c#
Вопрос:
Я создал текстовый файл, чтобы сохранить ошибку в этом созданном файле. У меня есть кнопка, которая при нажатии выдает ошибку, которую следует сохранить в файл. Но если я нажму кнопку дважды, она перезапишет первую сгенерированную ошибку, потому что содержимое файла перезаписывается. Я хочу сгенерировать другой отдельный файл, чтобы сохранить новую ошибку. Для каждой новой ошибки должен создаваться новый файл.
Заранее спасибо
Комментарии:
1. Итак, если я нажму на кнопку 100 раз, вы хотите, чтобы было создано 100 файлов. С какой стати вам это нужно?
2. Реальный вопрос в том, зачем вам (@AshBurlaczenko) это нужно? Вы были пользователем 😉
3. С какой стати люди спрашивают о том, почему кто-то хочет что-то сделать. Этот сайт не о причинах, он о проблемах!
Ответ №1:
Простое использование: метод FileExists, а затем, если он существует, выберите новое имя. В качестве альтернативы вы могли бы просто добавить к файлу.
PSUDO:
public string checkFileName(string fileName){
if(File.Exists(fileName)){
/Pick a new one
newFileName= fileName DateTime.Now.ToLongDateString()
return checkFileName(newFileName)
}
return fileName
}
Это может быть идеальной ссылкой для вас, как открыть и добавить файл журнала
Комментарии:
1. Я не хочу добавлять ошибки в тот же файл. Я хочу создать отдельный файл для каждой ошибки
2. Тогда примите мой первый совет. Проверьте, существует ли файл, а затем измените имя файла.
3. Зачем использовать рекурсию для этого? В (маловероятном) случае, если файл уже существует, таким образом, имя просто становится длиннее.
Ответ №2:
Вы можете добавить временную метку в filename, в этом случае вы будете получать новый файл каждый раз.
Ответ №3:
private void SaveErrorMessage(string errorMessage)
{
string errorFile = null;
for( int x = 0; x < Int32.MaxValue; x )
{
errorFile = string.Format(CultureInfo.InvariantCulture, "error-{0}.txt", x);
if( !System.IO.File.Exists(errorFileTest) )
{
break;
}
}
File.WriteAllText(errorFile, errorMessage);
}
Это перезапишет последний файл после того, как у вас были файлы Int32.MaxValue, но это займет некоторое время.
Альтернативным (и, вероятно, лучшим) подходом было бы просто добавить к файлу, а не создавать новый.
Вы также можете рассмотреть возможность использования более надежного решения для ведения журнала, такого как log4net.
Ответ №4:
Создание файла на C #, вероятно, это то, что вы ищете.
Ответ №5:
Итак, вы хотите сгенерировать уникальное имя файла для каждой ошибки, возникающей в вашей программе? Вероятно, самый простой способ добиться этого — использовать дату / время, когда произошла ошибка, для присвоения имени файлу. В функции, с помощью которой вы выполняете запись в файл, вы захотите назвать файл следующим образом:
string filename = LogPath DateTime.Now.ToString("yyyyMMdd.HHmmss") ".err";
Где LogPath — это путь к папке, в которую вы хотите записать файлы ошибок.