Как правильно открыть файл для удаления?

Я думал, что это совершенно тривиальная задача, но у меня немного заболела голова. Я хотел бы открыть файл, чтобы убедиться, что у меня есть монопольный доступ, проверить наличие определенных условий, а затем удалить его.

Сейчас я использую подход 99%:

FileStream s = null;
try {
    s = new FileStream (
        path,
        FileMode.Open,
        FileAccess.ReadWrite,
        FileShare.None);
    // some stuff about the file is checked here
    s.Dispose ();
    // hope the file is not accessed by someone else...
    File.Delete (path);
    return true;
}
catch (IOException) {
    if (s !=null) s.Dispose ();
    return false;
}

Обычно это работает, но я полагал Это лучший способ избежать краевого условия.

Открытие файла с флагом DeleteOnClose не работает, потому что указанная проверка (которая происходит после открытия с уже установленным флагом удаления) может указывать на то, что файл не следует удалять.

10
задан Brian Tompsett - 汤莱恩 11 August 2015 в 10:24
поделиться