この質問に答えようとすると、そのファイルがすでに存在するときに新しいファイルを作成しようとしても、一意の例外タイプがスローされず、ジェネリックがスローされるだけであることに驚きましたIOException
。
IOException
したがって、が既存のファイルの結果なのか、それとも他のIOエラーの結果なのかを判断する方法がわからないままです。
例外には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?
}