Saltar al contenido

Códigos de excepción, o detección de una excepción de tipo “el archivo ya existe”

Esta sección ha sido aprobado por nuestros especialistas para que tengas la seguridad de la exactitud de este tutorial.

Solución:

try

    using (var stream = new FileStream("C:\Test.txt", FileMode.CreateNew))
    using (var writer = new StreamWriter(stream))
    
        //write file
    

catch (IOException e)

    var exists = File.Exists(@"C:Text.text"); // =)

No funcionará para archivos temporales, etc., que podrían haberse eliminado nuevamente.

Aquí están mis mejores prácticas de excepción: https://coderr.io/exception-handling

Puede colocar esta condición en su instrucción catch para IOException: if(ex.Message.Contains("already exists")) ... . Es un truco, pero funcionará para todos los casos en que exista un archivo, incluso archivos temporales y demás.

Editar: hay otro Hresult que se usa cuando el archivo ya existe: 0x800700B7 (-2147024713) “No se puede crear un archivo cuando ese archivo ya existe”. Se actualizó el ejemplo de código.


Cuando intenta crear un nuevo archivo y ya existe, IOException tendrá Hresult = 0x80070050 (-2147024816).

Así que tu código podría verse así:

try

    using (var stream = new FileStream("C:\Test.txt", FileMode.CreateNew))
    using (var writer = new StreamWriter(stream))
    
        //write file
    

catch (IOException e)
 
        e.HResult == -2147024713)
    
        // File already exists.
    

Acuérdate de que tienes concesión de agregar una reseña si te fue útil.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *