如何浏览几个文件夹?
一个select是做几次System.IO.Directory.GetParent()。 从执行程序集所在的位置移动几个文件夹还有更优雅的方式吗?
我想要做的是find一个文本文件驻留在应用程序文件夹上的一个文件夹。 但是程序集本身在应用程序文件夹深处的文件夹内。
其他简单的方法是做到这一点:
string path = @"C:\Folder1\Folder2\Folder3\Folder4"; string newPath = Path.GetFullPath(Path.Combine(path, @"..\..\"));
注意这两个级别。 结果将是: newPath = @"C:\Folder1\Folder2\";
如果c:\ folder1 \ folder2 \ folder3 \ bin是path,则以下代码将返回bin文件夹的path基础文件夹
string directory=System.IO.Directory.GetParent(Environment.CurrentDirectory).ToString());
即C:\ folder1中\文件夹2 \ folder3
如果你想要folder2path,那么你可以通过获取目录
string directory = System.IO.Directory.GetParent(System.IO.Directory.GetParent(Environment.CurrentDirectory).ToString()).ToString();
那么你将得到的path为c:\ folder1 \ folder2 \
你可以使用.. \path去上一级,…. \path从path走两级。
你也可以使用path类。
C#path类
以下方法search以应用程序启动path(* .exe文件夹)开头的文件。 如果没有find该文件,则会search父文件夹,直到find文件或到达根文件夹。 如果找不到该文件,则返回null
。
public static FileInfo FindApplicationFile(string fileName) { string startPath = Path.Combine(Application.StartupPath, fileName); FileInfo file = new FileInfo(startPath); while (!file.Exists) { if (file.Directory.Parent == null) { return null; } DirectoryInfo parentDir = file.Directory.Parent; file = new FileInfo(Path.Combine(parentDir.FullName, file.Name)); } return file; }
注意: Application.StartupPath
通常用于WinForms应用程序,但它也可以在控制台应用程序中使用; 但是,您将不得不设置对System.Windows.Forms
程序集的引用。 您可以通过replaceApplication.StartupPath
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)
如果你喜欢。
这是最适合我的工作:
string parentOfStartupPath = Path.GetFullPath(Path.Combine(Application.StartupPath, @"../"));
获得“正确”的path不是问题,加上“../”显然是这样做的,但是在那之后,给定的string是不可用的,因为它只是在末尾添加“../”。 用Path.GetFullPath()
围绕它将给你绝对path,使它可用。
这可能有帮助
string parentOfStartupPath = Path.GetFullPath(Path.Combine(Application.StartupPath, @"../../")) + "Orders.xml"; if (File.Exists(parentOfStartupPath)) { // file found }
也许你可以使用一个函数,如果你想声明的层数,并将其放入一个函数?
private String GetParents(Int32 noOfLevels, String currentpath) { String path = ""; for(int i=0; i< noOfLevels; i++) { path += @"..\"; } path += currentpath; return path; }
你可以这样称呼它:
String path = this.GetParents(4, currentpath);