2015-06-22 2 views
-5

Я знаю, что Directory.CreateDirectory действительно создает родителей, так как я могу прекратить это? то есть есть режим, который я могу использовать, например, так, как это делается, причина в том, что у меня есть программа просмотра, наблюдающая за родительским деревом верхнего дерева, и он идет в беспроигрышном случае, если Directory.CreateDirectory создает несколько режимов за раз.Как остановить Directory.CreateDirectory создание родителей?

Есть ли эквивалент Directory.CreateDirectory, который НЕ будет делать родители?

+0

Но подумайте: если метод не все ow создать родителя, если родительский не существует? делает ли оно исключение? –

+0

Пожалуйста, добавьте, по крайней мере, - добавьте примеры родительских каталогов. Вы можете использовать свою программу просмотра, чтобы посоветовать вам. –

+2

Небольшая комбинация ['Directory.GetParent'] (https://msdn.microsoft.com/en-us/library/system.io.directory.getparent (v = vs.110) .aspx) и [' Directory.Exists'] (https://msdn.microsoft.com/en-us/library/system.io.directory.exists (v = vs.110) .aspx) должно быть тривиально для реализации. –

ответ

0
List<string> missingDirectories = null; 
private void MakeParents(string path) 
{ 
    missingDirectories = new List<string>(); 
    missingDirectories.Add(path); 
    parentDir(path); 
    missingDirectories = missingDirectories.OrderBy(x => x.Length).ToList<string>(); 
    foreach (string directory in missingDirectories) 
    { 
     Directory.CreateDirectory(directory); 
    }   
} 
private void parentDir(string path) 
{ 
    string newPath = path.Substring(0, path.LastIndexOf(Path.DirectorySeparatorChar)); 
    if (!Directory.Exists(newPath)) 
    { 
     missingDirectories.Add(newPath); 
     parentDir(newPath); 
    } 
} 

это делает, проблема в том, что если вы хотите, чтобы «мягко» скатать пути один реж в то время, что делает их, что-то, как это единственный способ, которым вы можете сделать это:/

+0

могут все люди, которые отметили это, остановитесь, пожалуйста, это действительно смущает этот сайт иногда –

0

Вы понимаете, зачем вам нужен такой метод? Похоже, что вы не хотите, чтобы создать все папки, необходимые для создания целевой папки, как: C:\this\is\your\path\TargetFolder В этом случае вы можете просто сделать следующее:

const string path = @"C:\this\is\your\path"; 
if (Directory.Exists(path)) 
{ 
    Directory.CreateDirectory(Path.Combine(path, "TargetDirectory")); 
} 

Если у вас есть другая цель для этого метода, пожалуйста помочь нам понять, какие один

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