dev*_*747 100 .net c# console-application
一种选择是做几次System.IO.Directory.GetParent().是否有更优雅的方式从执行程序集所在的位置移动几个文件夹?
我想要做的是找到一个文本文件,它位于应用程序文件夹上方的一个文件夹中.但是程序集本身位于bin中,这是应用程序文件夹中的几个文件夹.
A-S*_*ani 186
其他简单的方法是这样做:
string path = @"C:\Folder1\Folder2\Folder3\Folder4";
string newPath = Path.GetFullPath(Path.Combine(path, @"..\..\"));
Run Code Online (Sandbox Code Playgroud)
注意这有两个级别.结果将是:
newPath = @"C:\Folder1\Folder2\";
小智 26
如果c:\ folder1\folder2\folder3\bin是路径,则以下代码将返回bin文件夹的路径基础文件夹
//string directory=System.IO.Directory.GetParent(Environment.CurrentDirectory).ToString());
string directory=System.IO.Directory.GetParent(Environment.CurrentDirectory).ToString();
Run Code Online (Sandbox Code Playgroud)
即C:\ folder1中\文件夹2\folder3
如果你想要folder2路径,那么你可以通过获取目录
string directory = System.IO.Directory.GetParent(System.IO.Directory.GetParent(Environment.CurrentDirectory).ToString()).ToString();
Run Code Online (Sandbox Code Playgroud)
那么你将获得路径为c:\ folder1\folder2 \
以下方法搜索以应用程序启动路径(*.exe 文件夹)开头的文件。如果在那里找不到该文件,则会搜索父文件夹,直到找到该文件或到达根文件夹。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;
}
Run Code Online (Sandbox Code Playgroud)
注意:Application.StartupPath通常用于WinForms应用程序,但它也适用于控制台应用程序;但是,您必须设置对System.Windows.Forms程序集的引用。如果您愿意,可以替换Application.StartupPath为。
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)
我使用这个策略来查找配置和资源文件。这允许我通过将它们放置在公共父文件夹中来为多个应用程序或应用程序的调试和发布版本共享它们。
如果您想声明级别数并将其放入函数中,也许您可以使用函数?
private String GetParents(Int32 noOfLevels, String currentpath)
{
String path = "";
for(int i=0; i< noOfLevels; i++)
{
path += @"..\";
}
path += currentpath;
return path;
}
Run Code Online (Sandbox Code Playgroud)
你可以这样称呼它:
String path = this.GetParents(4, currentpath);
Run Code Online (Sandbox Code Playgroud)
这对我最有用:
string parentOfStartupPath = Path.GetFullPath(Path.Combine(Application.StartupPath, @"../"));
获得"正确"路径不是问题,添加'../'显然会这样做,但在此之后,给定的字符串不可用,因为它只会在末尾添加'../'.它周围Path.GetFullPath()将为您提供绝对路径,使其可用.
C#
string upTwoDir = Path.GetFullPath(Path.Combine(System.AppContext.BaseDirectory, @"..\..\"));
Run Code Online (Sandbox Code Playgroud)
public static string AppRootDirectory()
{
string _BaseDirectory = AppDomain.CurrentDomain.BaseDirectory;
return Path.GetFullPath(Path.Combine(_BaseDirectory, @"..\..\"));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
108137 次 |
| 最近记录: |