AnswerBun.com

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

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

Stack Overflow en español Asked by user174087 on December 4, 2021

2 Answers

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!

Related Questions

¿Cómo sabe C++ si una función existe y además dónde está ubicada?

3  Asked on November 26, 2020 by elblack-ninja

   

Como guardar nuevo archivo con Visual Basic en Excel

1  Asked on November 26, 2020 by kevincs7

   

¿Cómo puedo incluir carpetas en mi programa de c++?

0  Asked on November 26, 2020 by nicolas-fredsny

 

Ejecutar y parar un metodo java cada cierto tiempo

2  Asked on November 26, 2020 by cesar-jimenez

   

Recibir datos desde dos actividades diferentes

0  Asked on November 25, 2020 by mohenno

       

¿Comó expandir tableview cell?

1  Asked on November 23, 2020 by carlos-padron

     

Alternativa de fetchAll

1  Asked on November 21, 2020 by cesar-reyna

     

Problema con el uso de Expanded

1  Asked on November 20, 2020 by shockz

   

Cómo obtener solo la primera coincidencia en un tabla con SQL?

1  Asked on November 19, 2020 by gian-carlo

 

imagen webp no se visualiza en iphone

1  Asked on November 18, 2020 by jhonatan-ibarra

   

Could not open input file: D:xamppphalcon-devtoolsphalcon.php

1  Asked on November 17, 2020 by manrrique-meneses-yaranga

   

Pasar Valor de Un formulario (HTML, PHP) a JS

1  Asked on November 13, 2020 by morgan

     

Error con routing module y captura de id ANGULAR

1  Asked on November 10, 2020 by jorge-humberto-guzmn-fuentes

     

Ask a Question

Get help from others!

© 2022 AnswerBun.com. All rights reserved.