without from filename extension combine c# .net parsing path

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; }