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.