C# Directory.CreateDirectory(path). Должен ли я сначала проверить, существует ли путь?C#

Место общения программистов C#
Ответить
Anonymous
 C# Directory.CreateDirectory(path). Должен ли я сначала проверить, существует ли путь?

Сообщение Anonymous »

Мне нужно скопировать несколько файлов в каталог, но иногда этот каталог еще не существует, и его нужно сначала создать. Однако в большинстве случаев каталог будет существовать, поскольку его нужно создать только один раз.

Я знаю, что могу просто поставить Directory.CreateDirectory() перед копированием файла, и CreateDirectory() просто вернет результат, если каталог уже существует.

Код: Выделить всё

string destFolder; // path to destination
string sourceFolder; // path to source
Directory.CreateDirectory( destFolder ); // this will work even if destFolder exists
File.Copy( sourceFolder + sourceFileName, destFolder + sourceFileName );
Но я знаю, что почти в каждом случае папка назначения уже существует, поэтому быстрее проверить ее существование, чем в любом случае вызывать CreateDirectory().

Код: Выделить всё

if( !Directory.Exists( destFolder ) ) // check if it exists first
{
Directory.CreateDirectory( destFolder );
}
// now move on to using the folder
Меня не волнует, сколько времени потребуется на создание каталога, учитывая, что пользователи делают это только один раз. Меня больше интересует, работает ли оператор if с Directory.Exists() быстрее, чем время, необходимое Directory.CreateDirectory(), чтобы выяснить, что каталог уже существует.

Мне «кажется» расточительным каждый раз вызывать Directory.CreateDirectory(), даже если он, вероятно, существует, поэтому я «чувствую себя лучше» сначала проверяя, но в любом случае это все равно вызов функции, так что действительно ли я получаю преимущество, уродуя свой код дополнительными операторами if и проверками Directory.Exists()?

Подробнее здесь: https://stackoverflow.com/questions/275 ... ists-first
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»