Извлечение пути из OpenFileDialog путь / имя файла - PullRequest
73 голосов
/ 13 января 2009

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

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)
    {
       ...
    }

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

Ответы [ 5 ]

101 голосов
/ 13 января 2009

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

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

string directoryPath = Path.GetDirectoryName(filePath);
26 голосов
/ 15 февраля 2013

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

string fullPath = ofd.FileName;
string fileName = ofd.SafeFileName;
string path = fullPath.Replace(fileName, "");
12 голосов
/ 10 июля 2012
if (openFileDialog1.ShowDialog(this) == DialogResult.OK)
{
    strfilename = openFileDialog1.InitialDirectory + openFileDialog1.FileName;
}
7 голосов
/ 21 сентября 2012

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

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

if (browser.ShowDialog() == DialogResult.OK)
{
  tempPath  = browser.SelectedPath; // prints path
}
0 голосов
/ 26 апреля 2016

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

string fullPath =openFileDialog1.FileName;
string directory;
directory = fullPath.Substring(0, fullPath.LastIndexOf('\\'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...