Извлечение пути из 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('\\'));