Пытаясь ответить на этот вопрос, я с удивлением обнаружил, что попытка создать новый файл, когда этот файл уже существует, не вызывает уникальный тип исключения, он просто бросает общий IOException
.
Поэтому мне остается задаться вопросом, как определить, является ли IOException
результатом существующего файла или некоторой другой ошибки ввода-вывода.
Исключение имеет HResult, но это свойство защищено и, таким образом, недоступно для меня.
Единственный другой способ, который я вижу, - сопоставить шаблон с строкой сообщения, которая кажется ужасной.
Пример:
try
{
using (var stream = new FileStream("C:\\Test.txt", FileMode.CreateNew))
using (var writer = new StreamWriter(stream))
{
//write file
}
}
catch (IOException e)
{
//how do I know this is because a file exists?
}