c# - from - Extracción de la ruta de OpenFileDialog ruta/nombre de archivo
path combine c# (5)
¡Aquí está la manera simple de hacerlo!
string fullPath =openFileDialog1.FileName;
string directory;
directory = fullPath.Substring(0, fullPath.LastIndexOf(''//'));
Estoy escribiendo una pequeña utilidad que comienza con la selección de un archivo, y luego tengo que seleccionar una carpeta. Me gustaría establecer de forma predeterminada la carpeta donde estaba el archivo seleccionado.
OpenFileDialog.FileName
devuelve la ruta de acceso completa y el nombre del archivo ; lo que quiero es obtener solo la parte de la ruta (sin el nombre del archivo) , así puedo usar eso como la carpeta inicial seleccionada .
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)
{
...
}
¿Hay algún método .NET para hacer esto, o necesito usar regex, split, trim,
etc.?
Puede usar FolderBrowserDialog en lugar de FileDialog y obtener la ruta del resultado OK.
FolderBrowserDialog browser = new FolderBrowserDialog();
string tempPath ="";
if (browser.ShowDialog() == DialogResult.OK)
{
tempPath = browser.SelectedPath; // prints path
}
Qué tal esto:
string fullPath = ofd.FileName;
string fileName = ofd.SafeFileName;
string path = fullPath.Replace(fileName, "");
Use la clase Path
de System.IO
. Contiene llamadas útiles para manipular rutas de archivos, incluido GetDirectoryName
que hace lo que desea y devuelve la parte del directorio de la ruta del archivo.
El uso es simple.
string directoryPath = Path.GetDirectoryName(filePath);
if (openFileDialog1.ShowDialog(this) == DialogResult.OK)
{
strfilename = openFileDialog1.InitialDirectory + openFileDialog1.FileName;
}