TransWikia.com

'La ruta de acceso de archivo dada termina con un carácter separador de directorio

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

2 Answers

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.extcuyo 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

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP