获取文件所在目录的最简单方法是什么?我用它来设置一个工作目录。

string filename = @"C:\MyDirectory\MyFile.bat";

在这个例子中,我应该得到“C:\MyDirectory”。


当前回答

您可以使用Path。大多数情况下GetFullPath。 但是如果你想在文件名相对位置的情况下获得路径,那么你可以使用下面的泛型方法:

string GetPath(string filePath)
{
  return Path.GetDirectoryName(Path.GetFullPath(filePath))
}

例如:

GetPath("C:\Temp\Filename.txt")返回"C:\Temp\"

GetPath("Filename.txt")返回当前工作目录,如"C:\Temp\"

其他回答

如果您确实有一个绝对路径,请使用path . getdirectoryname (path)。

如果你可能只得到一个相对名称,使用新的FileInfo(path). directory . fullname。

注意,Path和FileInfo都在命名空间System.IO中。

Path.GetDirectoryName(filename);

您可以使用以下命令获取当前应用程序路径:

string AssemblyPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location).ToString();

如果您正在使用FileInfo对象,那么有一种简单的方法可以通过DirectoryName属性提取目录完整路径的字符串表示。

FileInfo的描述。通过MSDN的DirectoryName属性:

获取表示目录的完整路径的字符串。

示例用法:

string filename = @"C:\MyDirectory\MyFile.bat";
FileInfo fileInfo = new FileInfo(filename);
string directoryFullPath = fileInfo.DirectoryName; // contains "C:\MyDirectory"

链接到MSDN文档。

您可以使用Path。大多数情况下GetFullPath。 但是如果你想在文件名相对位置的情况下获得路径,那么你可以使用下面的泛型方法:

string GetPath(string filePath)
{
  return Path.GetDirectoryName(Path.GetFullPath(filePath))
}

例如:

GetPath("C:\Temp\Filename.txt")返回"C:\Temp\"

GetPath("Filename.txt")返回当前工作目录,如"C:\Temp\"