Извлечение пути из OpenFileDialog path/filename

Я пишу небольшую утилиту, которая начинается с выбора файла, а затем мне нужно выбрать папку. Я хотел бы по умолчанию указать папку, в которой был выбран выбранный файл.

OpenFileDialog.FileName возвращает полный путь и имя файла - я хочу получить только часть пути (sans 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)
    {
       ...
    }

Существуют ли какие-либо .NET-методы для этого, или мне нужно использовать регулярное выражение, разделение, обрезку и т.д.

Ответ 1

Используйте Path класс из System.IO. Он содержит полезные вызовы для управления файловыми путями, в том числе GetDirectoryName, который делает то, что вы хотите, возвращая часть каталога пути к файлу.

Использование прост.

string directoryPath = Path.GetDirectoryName(filePath);

Ответ 2

как насчет этого:

string fullPath = ofd.FileName;
string fileName = ofd.SafeFileName;
string path = fullPath.Replace(fileName, "");

Ответ 3

if (openFileDialog1.ShowDialog(this) == DialogResult.OK)
{
    strfilename = openFileDialog1.InitialDirectory + openFileDialog1.FileName;
}

Ответ 4

Вы можете использовать FolderBrowserDialog вместо FileDialog и получить путь от результата OK.

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

if (browser.ShowDialog() == DialogResult.OK)
{
  tempPath  = browser.SelectedPath; // prints path
}

Ответ 5

Вот простой способ сделать это!

string fullPath =openFileDialog1.FileName;
string directory;
directory = fullPath.Substring(0, fullPath.LastIndexOf('\\'));