簡體   English   中英

我可以同時創建2個SubDirectories C#?

[英]Can i create 2 SubDirectories at same time C#?

我想創建一個像這樣的簡單目錄樹,雖然它不需要具有相同的名稱

目錄樹

我是否需要像這樣寫:

Directory.CreateDirectory("/home/XXX/Documents/Users/Pepe/datos/");
Directory.CreateDirectory("/home/XXX/Documents/Users/Juan");

有沒有選擇在同一個字符串路徑中創建“Pepe”和“Juan”?

要發布答案並提供替代方案,如果您只想使用CreateDirectory方法,那么您可以使用一個方法來獲取params string[]的參數,並在調用該方法時傳入目錄。

代碼看起來像這樣

private static void CreateDirectories(params string[] directories)
{
    foreach (string directory in directories)
    {
        Directory.CreateDirectory(directory);
    }
}

你可以用它來調用它

CreateDirectories("/home/XXX/Documents/Users/Pepe/datos/", "/home/XXX/Documents/Users/Juan");

或者你可以傳入一個字符串數組

CreateDirectories(new [] { "/home/XXX/Documents/Users/Pepe/datos/", "/home/XXX/Documents/Users/Juan"});

我減少了上面的System.IO方法的使用,然后我接口允許我創建模擬的類,然后單元測試我創建的軟件而不執行I / O操作,這帶來了一個你可以使用上面的場景除了它不會是靜態的。

BCL沒有任何東西可以做到這一點; 你必須為每一個調用CreateDirectory

如果你有一組目錄路徑,你可以把它放在一個循環中:

foreach (string dirPath in directoryPaths)
{
    Directory.CreateDirectory(dirPath);
}

聽起來你有一個共同的根目錄:

/home/XXX/Documents/Users

並且您想從那里添加子目錄。 如果是這種情況,如果目標是只需要引用子目錄,那么我會采用@ColinM的方法,但稍微修改它如下:

private static void CreateDirectories(string directoryRoot, params string[] directories)
{
    foreach (string directory in directories)
    {
        Directory.CreateDirectory(Path.Combine(directoryRoot, directory));
    }
}

現在當你調用它時,你只需要提一次根

CreateDirectories("/home/XXX/Documents/Users", "Pepe/datos/", "Juan");

約的好處Path.Combine是,你不必擔心有一個斜線/要么是在尾隨directoryRoot或領導在任何的directories --IT將確保它到底是正確格式化。

當然,如果你采用這種方法,你需要決定當directories為空時會發生什么 - 你創建了directoryRoot(假設它還沒有),你是拋出錯誤,還是只返回?

你可以創建像。

System.IO.Directory.CreateDirectory( “C:/方向1 /方向2 / DIR3”);

認為c:drive的根目錄中沒有Dir1。

它將創建文件夾結構,如Dir1 - > Dir2 - > Dir3。

如果Die1在那里,那么它將創建子目錄的其余部分。

多級相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM