簡體   English   中英

某個父目錄的C#路徑

[英]C# path to certain parent directory

是否有一種從當前路徑獲取某個父目錄路徑的簡短方法。

我有這樣的道路:

"c:\\users\\userName\\documents\\visual studio 2013\\Projects\\SolutionName\\ProjectName\\bin\\Debug"

我想得到'SolutionName'目錄的路徑,就像這樣

"c:\\users\\userName\\documents\\visual studio 2013\\Projects\\SolutionName"

我需要它,因為我在文件夾中存儲了一些數據

"c:\\users\\userName\\documents\\visual studio 2013\\Projects\\SolutionName\\DataFolder"

我需要在我的解決方案中從不同的項目訪問它。

謝謝大家,有我完成的

public static string GetParent( string parentName,string FileName)
    {
        var dir = new DirectoryInfo(System.IO.Directory.GetCurrentDirectory());

        while (dir.Parent.Name != parentName)
        {
            dir = dir.Parent;
        }
        return dir.Parent.FullName+"\\Data\\"+FileName;
    }

我接受了卡勒姆布拉德伯里的回答,因為我只是改變了它不是遞歸的。

您可以使用DirectoryInfo類通過一點迭代功能相對容易地完成此操作。

    public string GetParent(string path, string parentName)
    {
        var dir = new DirectoryInfo(path);

        if (dir.Parent == null)
        {
            return null;
        }

        if (dir.Parent.Name == parentName)
        {
            return dir.Parent.FullName;
        }

        return this.GetParent(dir.Parent.FullName, parentName);
    }

如果您想要干凈的解決方案,請按照以下步

  1. 在解決方案的每個項目中嘗試更改Build Output Path

    在此輸入圖像描述

  2. 你必須讓你所有的路徑都像這樣

      "..\\\\datafolder\\File.txt" 

你在尋找的是:

var curd = Environment.CurrentDirectory; 
// this will give you current directory for eg: if you are in "Debug" mode then "c:\users\userName\documents\visual studio 2013\Projects\SolutionName\ProjectName\bin\Debug" and if you are in "Release" mode then "c:\users\userName\documents\visual studio 2013\Projects\SolutionName\ProjectName\bin\Release"

現在你想要的是你的路徑名,直到SolutionName文件夾為3級,所以你所要做的就是附加到上面的行@"\\..\\..\\..\\"

var curd = Environment.CurrentDirectory + @"\..\..\..\";

你完成了

current directory Key要升級的相同數量的@"\\..\\" ,需要追加。

以下是一些解決方案:

string dataFolder = Directory.GetCurrentDirectory() + "..\\..\\..\\DataFolder"

string dataFolder = Path.GetDirectoryName(Path.GetDirectoryName(System.IO.Directory.GetCurrentDirectory())) + "\\DataFolder";

你也可以看到這個鏈接找到當前路徑的最佳方法,看起來GetCurrentDirectory可能不是最好的解決方案: 獲取我的.exe的路徑

使用您需要的路徑創建一個reg密鑰

Microsoft.Win32.RegistryKey key;
key = Microsoft.Win32.Registry.CurrentUser.CreateSubKey("Names");
key.SetValue("Name", "Isabella");
key.Close();

創建后,您可以使用Microsoft.Win32命名空間下的RegistryKey

暫無
暫無

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

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