[英]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);
}
如果您想要干凈的解決方案,請按照以下步
在解決方案的每個項目中嘗試更改Build
Output Path
你必須讓你所有的路徑都像這樣
"..\\\\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.