c# - net - Obtener ruta completa sin nombre de archivo de la ruta que incluye nombre de archivo
obtener ruta de carpeta c# (6)
¿Hay algo incorporado en System.IO.Path
que me dé solo el filepath?
Por ejemplo, si tengo una string
@ "c: / servidor web / public / myCompany / configs / promo.xml",
¿Hay algún método BCL que me dé
"c: / servidor web / public / myCompany / configs /"?
Usé esto y funciona bien:
string[] filePaths = Directory.GetFiles(Path.GetDirectoryName(dialog.FileName));
foreach (string file in filePaths)
{
if (comboBox1.SelectedItem.ToString() == "")
{
if (file.Contains("c"))
{
comboBox2.Items.Add(Path.GetFileName(file));
}
}
}
Use ''GetParent ()'' como se muestra, funciona bien. Agregue la verificación de errores como lo necesite.
var fn = openFileDialogSapTable.FileName;
var currentPath = Path.GetFullPath( fn );
currentPath = Directory.GetParent(currentPath).FullName;
Path.GetDirectoryName()
... pero necesita saber que la ruta que le está pasando contiene un nombre de archivo; simplemente elimina el último bit de la ruta, ya sea un nombre de archivo o un nombre de directorio (en realidad no tiene idea de cuál).
Primero puede validar probando File.Exists()
y / o Directory.Exists()
en su ruta primero para ver si necesita llamar a Path.GetDirectoryName
Path.GetDirectoryName()
devuelve el nombre del directorio, por lo que para lo que desea (con el carácter solidus inverso rezagado) puede llamar a Path.GetDirectoryName(filePath) + Path.DirectorySeparatorChar
.
string fileAndPath = @"c:/webserver/public/myCompany/configs/promo.xml";
string currentDirectory = Path.GetDirectoryName(fileAndPath);
string fullPathOnly = Path.GetFullPath(currentDirectory);
Console.WriteLine(Path.GetDirectoryName(@"C:/hello/my/dear/world.hm"));