Stack Overflow en español Asked by user174087 on December 4, 2021
Tengo este error
La ruta de acceso de archivo dada termina con un carácter separador de
directorio.
cuando intento eliminar un archivo. Es en C# con Visual Studio.
nombre = path.getfilenamewithoutextension(nombre de archivo seleccionado con openfiledialog)
ext = path.getextension(archivo seleccionado con openfiledialog)
...
computer.FileSystem.DeleteFile(form1.folderBrowserDialog1.SelectedPath + "/" + form1.nombre + form1.ext);
Esta es una linea de código computer.FileSystem.DeleteFile(form1.folderBrowserDialog1.SelectedPath + "/" + form1.nombre + form1.ext);
, en donde se nota que has obtenido la ruta a una carpeta desde la propiedad SelectedPath
de un FolderBrowserDialog
, pero introduces dos variables form1.nombre + form1.ext
cuyo origen parece provenir de las dos siguientes lineas que no son código, si no pseudocódigo.
nombre = path.getfilenamewithoutextension(nombre de archivo seleccionado con openfiledialog)
ext = path.getextension(archivo seleccionado con openfiledialog)
De ambas lineas se puede inferir que nombre
y ext
se obtienen a partir de un OpenFileDialog
, si eso as así, no veo la necesidad de usar FolderBrowserDialog
, seria suficiente con usar la propiedad FileName
del OpenFileDialog
Con este código que te dejo a continuacion seria más que suficiente.
OpenFileDialog openfiledialog = new OpenFileDialog();
if (openfiledialog.ShowDialog() == DialogResult.OK)
{
if( System.IO.File.Exists(openfiledialog.FileName))
{
System.IO.File.Delete(openfiledialog.FileName);
}
}
Answered by Eduardo Reyes on December 4, 2021
Ten en cuenta que el separador de directorios es diferente según el sistema operativo, utilizar /
no funciona en windows.
Cuando se trata de construir rutas de acceso a archivos, lo más recomendable es utilizar el método System.IO.Path.Combine(...)
.
Este método garantiza que la ruta sea construida adecuadamente sin importar el sistema operativo.
Así tu ejemplo lo puedes escribir de la siguiente manera (se asume que form1.ext
contiene el .
):
Path.Combine(form1.folderBrowserDialog1.SelectedPath, form1.nombre + form1.ext)
Vale destacar la existencia de Path.DirectorySeparatorChar
que contiene el separador de directorios específico del sistema operativo.
En otro orden de ideas, dejo algunas referencias que te pueden interesar:
interpolación de string para mejorar la escritura del código cuando se trata de concatenar string.
Answered by Pablo Gutiérrez on December 4, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP