某些父目录的C#路径
是否有从当前路径获取某个父目录路径的简短方法。某些父目录的C#路径
我有这样一个路径:
"c:\\users\\userName\\documents\\visual studio 2013\\Projects\\SolutionName\\ProjectName\\bin\\Debug"
和我想的路径,“解决方案名称”目录下,这样
"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);
}
谢谢,这是我正在寻找,但我改变了它,所以它不会递归。 –
如果parentName不是当前目录的父目录,那么您的更改会得到空引用异常。不管这是不是一个问题都取决于你。很高兴我能帮上忙 –
如果你想要一个干净的解决方案遵循这个步骤
-
在解决方案中的每个项目都试图改变自己的
Build
Output Path
-
你必须做出相对所有的路径像这样的东西
"..\\datafolder\File.txt"
这里有几个解决方案:
string dataFolder = Directory.GetCurrentDirectory() + "..\\..\\..\\DataFolder"
string dataFolder = Path.GetDirectoryName(Path.GetDirectoryName(System.IO.Directory.GetCurrentDirectory())) + "\\DataFolder";
你也可以看到这个链接的最佳方法找到你的当前路径,好像GetCurrentDirectory可能不是最好的解决办法:get path for my .exe
我必须从不同的文件夹访问同一文件夹,这些文件夹可以放在不同的文件夹中,但所有文件夹都放在“SolutionFolder”中,但它们可以在不同的层次上。 –
你正在寻找的是:
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 + @"\..\..\..\";
,你就完成了。
Key
想要上升的水平的数量从current directory
到@"\..\"
需要追加的数量。
创建路径的REG关键需要
Microsoft.Win32.RegistryKey key;
key = Microsoft.Win32.Registry.CurrentUser.CreateSubKey("Names");
key.SetValue("Name", "Isabella");
key.Close();
在创建时,您可以使用RegistryKey
类下Microsoft.Win32
命名空间
如果你只是想访问的文件夹(而不是显示路径) ,您可以简单地将“..”附加到完整路径:“c:\\ users \\ userName \\ documents \\ visual studio 2013 \\ Projects \\ SolutionName \\ DataFolder \\ .. \\” –