2015-08-27 2 views
6

Я создал папку на пути C:\Users\MYUSER\Desktop\TEST\.Directory.CreateDirectory не всегда создает папку

У меня есть следующий код:

private const string DIR = @"C:\Users\MYUSER\Desktop\TEST\tmp"; 

static void Main(string[] args) 
{ 
    if (Directory.Exists(DIR)) 
     Directory.Delete(DIR); 

    for (int i = 0; i < 100; i++) 
    { 
     var dinfo = Directory.CreateDirectory(DIR); 
     Directory.Delete(DIR); 
    } 

    Directory.CreateDirectory(DIR); 
} 

Когда я выполняю код, в большинстве случаев он работает нормально, и я могу видеть, что есть папка TMP внутри папки TEST.

Моя проблема заключается в том, что в некоторых других случаях Directory.CreateDirectory(DIR) не создает каталог вообще. Я даже проверил возвращаемый DirectoryInfo и его свойство Exists - false и Directory.CreateDirectory(DIR) не будет работать, потому что папка не существует. Есть ли объяснения для этого странного поведения?

+0

В NTFS у вас должны быть разрешения для этого. –

+4

Есть ли настоящая причина для такого кода или просто для тестирования? –

+0

Вы уверены, что не получаете исключения? Является ли каталог пустым? –

ответ

0

Была такая же проблема. Ошибок не было, но папки просто не создавались. Просто обнаружил корень проблемы и легкое исправление.

У меня было что-то вроде:

Directory.CreateDirectory("/Users/MyAccount/NewFolder"); 
#Some code... 
Directory.CreateDirectory("/Users/MyAccount/NewFolder/SubFolder"); 

Этот провал будет создавать папки в каталогах, которые были созданы до этого.

Решение: Добавить косую черту в конце пути.

Вместо:

Directory.CreateDirectory("/Users/MyAccount/NewFolder/SubFolder"); 

Do:

Directory.CreateDirectory("/Users/MyAccount/NewFolder/SubFolder/"); 

Добавление лидирующий слэш исправили проблему, и теперь она создает папку 100% времени. Больше никаких проблем.

Смежные вопросы