从OpenFileDialog路径/文件名中提取路径

Kev*_*nes 77 .net c# parsing path

我正在编写一个从选择文件开始的小实用程序,然后我需要选择一个文件夹.我想将文件夹默认为所选文件所在的位置.

OpenFileDialog.FileName返回完整的路径和文件名 - 我想要的只是获取路径部分(无文件名),所以我可以使用它作为初始选择的文件夹.

    private System.Windows.Forms.OpenFileDialog ofd;
    private System.Windows.Forms.FolderBrowserDialog fbd;
    ...
    if (ofd.ShowDialog() == DialogResult.OK)
    {
        string sourceFile = ofd.FileName;
        string sourceFolder = ???;
    }
    ...
    fbd.SelectedPath = sourceFolder; // set initial fbd.ShowDialog() folder
    if (fbd.ShowDialog() == DialogResult.OK)
    {
       ...
    }
Run Code Online (Sandbox Code Playgroud)

有没有.NET方法可以做到这一点,还是我需要使用regex, split, trim,等?

Jef*_*tes 108

使用Path来自的课程System.IO.它包含用于操作文件路径的有用调用,包括GetDirectoryName执行您想要的操作,返回文件路径的目录部分.

用法很简单.

string directoryPath = Path.GetDirectoryName(filePath);
Run Code Online (Sandbox Code Playgroud)

  • 谢谢 - 它必须是一个简单的答案.自我注意:不建议午夜后进行编码.阅读不仅仅是方法原型也有帮助,因为VS文档将其列为公共静态字符串GetDirectoryName(字符串路径)并且我误解了参数. (4认同)

Jan*_*ček 27

这个怎么样:

string fullPath = ofd.FileName;
string fileName = ofd.SafeFileName;
string path = fullPath.Replace(fileName, "");
Run Code Online (Sandbox Code Playgroud)


小智 14

if (openFileDialog1.ShowDialog(this) == DialogResult.OK)
{
    strfilename = openFileDialog1.InitialDirectory + openFileDialog1.FileName;
}
Run Code Online (Sandbox Code Playgroud)

  • 用户选择文件时,初始目录是否会更改?如果没有,那么当用户更改目录时,此方法将导致问题。另外,我认为他不希望`FileName`作为他的`sourceFolder`的一部分。 (2认同)

Sha*_*hin 7

您可以使用FolderBrowserDialog而不是FileDialog,并从OK结果中获取路径.

FolderBrowserDialog browser = new FolderBrowserDialog();
string tempPath ="";

if (browser.ShowDialog() == DialogResult.OK)
{
  tempPath  = browser.SelectedPath; // prints path
}
Run Code Online (Sandbox Code Playgroud)

  • 所以先选择文件,然后再次导航到它并选择文件夹? (2认同)