MSDN сообщает нам, что при вызове «File.Delete (path);» для файла, который не существует, генерируется исключение.
Было бы более эффективно вызвать метод удаления и использовать блок try / catch, чтобы избежать ошибки или проверить существование файла перед выполнением удаления?
Я склонен думать, что лучше избегать блока try / catch. Почему возникает ошибка, если вы знаете, как ее проверить.
В любом случае, вот пример кода:
// Option 1: Just delete the file and ignore any exceptions
/// <summary>
/// Remove the files from the local server if the DeleteAfterTransfer flag has been set
/// </summary>
/// <param name="FilesToSend">a list of full file paths to be removed from the local server</param>
private void RemoveLocalFiles(List<string> LocalFiles)
{
// Ensure there is something to process
if (LocalFiles != null && LocalFiles.Count > 0 && m_DeleteAfterTransfer == true)
{
foreach (string file in LocalFiles)
{
try { File.Delete(file); }
catch { }
}
}
}
// Option 2: Check for the existence of the file before delting
private void RemoveLocalFiles(List<string> LocalFiles )
{
// Ensure there is something to process
if (LocalFiles != null && LocalFiles.Count > 0 && m_DeleteAfterTransfer == true)
{
foreach (string file in LocalFiles)
{
if( File.Exists( file ) == true)
File.Delete(file);
}
}
}
Некоторые предыстории того, чего я пытаюсь достичь:
Код является частью класса оболочки FTP, который упростит функции FTP до того, что требуется, и может быть вызвано одним вызовом метода.
В этом случае у нас есть флаг с именем «DeleteAfterTransfer», и, если установлено значение «истина», мы сделаем эту работу. Если бы файл не существовал в первую очередь, я бы ожидал, что у меня будет исключение, прежде чем я доберусь до этой точки.
Я думаю, что отвечаю на свой вопрос здесь, но проверка существования файла менее важна, чем проверка наличия у меня разрешений на выполнение задачи или любых других потенциальных ошибок.