Как говорит Ричи, ловить исключение, вероятно, лучший подход здесь.
Но что, если вы хотите удалить 10 файлов и не хотите, чтобы они потерпели неудачу на полпути? Вам действительно нужен какой-то способ защиты всей транзакции. Так что полезно , чтобы иметь возможность пассивно проверять, используется ли файл. Вы можете определить, используется ли файл (или только для чтения, что также делает его недоступным для восстановления), просто попытавшись открыть его для записи (а затем, если вам это удастся, немедленно закрыть его). Это само по себе не гарантирует, что последующая попытка удаления будет успешной.
Другие подходы, которые могли бы работать:
- переместить / переименовать файл (ы) перед удалением (поместить их в безопасное место, чтобы вы знали, что они не могут быть впоследствии открыты другим процессом), чтобы вы могли «отменить» транзакцию, если какая-либо из отдельных операций перемещения не удалась
- поймать исключение и поставить в очередь будущую попытку удалить файл (либо в вашей собственной программе, либо вы можете пометить файл для автоматического удаления Windows при следующей перезагрузке)