verificar validar una saber ruta net existe directorio comprobar carpeta borrar archivo c# windows-8 windows-runtime microsoft-metro filenotfoundexception

c# - una - validar si existe archivo vba



¿Cómo verificar si el archivo existe en una aplicación de la Tienda Windows? (10)

¿Hay alguna otra manera de verificar si un archivo existe en una aplicación de la Tienda Windows?

try { var file = await ApplicationData.Current.LocalFolder.GetFileAsync("Test.xml"); //no exception means file exists } catch (FileNotFoundException ex) { //find out through exception }



De acuerdo con la respuesta aceptada en esta publicación , no hay otra manera en este momento. Sin embargo, el equipo de File IO está considerando cambiar la API para que devuelva null en lugar de lanzar una excepción.

Cita de la publicación vinculada:

Actualmente, la única forma de comprobar si existe un archivo es capturar la excepción FileNotFoundException. Como se ha señalado, tener una verificación explícita y la apertura es una condición de carrera y, como tal, no espero que exista ningún archivo. Creo que el equipo de File IO (no estoy en ese equipo, así que no estoy seguro, pero esto es lo que he escuchado) está considerando tener esta API de retorno nulo en lugar de lanzar si el archivo no existe.


El otro medio para verificar es obtener archivos en la carpeta local

var collection = ApplicationData.Current.LocalFolder.GetFilesAsync()

Usando este método y luego iterando sobre todos los elementos en la colección y verifica su disponibilidad.


Esto puede ser antiguo, pero parece que han cambiado cómo quieren que te acerques a esto.

Se supone que debes intentar hacer el archivo, luego retroceder si el archivo ya existe. Aquí está la documentación sobre esto. Estoy actualizando esto porque este fue el primer resultado en mi búsqueda de Google para este problema.

Entonces, en mi caso, quiero abrir un archivo o crearlo si no existe. Lo que hago es crear un archivo y abrirlo si ya existe. Al igual que:

save = await dir.CreateFileAsync(myFile, CreationCollisionOption.OpenIfExists);


La documentación para TryGetItemAsync dice: "Este ejemplo muestra cómo verificar la existencia de un archivo". Parece que esta API tiene la intención oficial de servir para ese propósito.


Me encontré con esta publicación de blog de Shashank Yerramilli que ofrece una respuesta mucho mejor.

He probado esto para Windows Phone 8 y funciona. No lo he probado en Windows Store aunque

Estoy copiando la respuesta aquí

Para la aplicación de Windows RT:

public async Task<bool> isFilePresent(string fileName) { var item = await ApplicationData.Current.LocalFolder.TryGetItemAsync(fileName); return item != null; }

Para Windows Phone 8

public bool IsFilePresent(string fileName) { return System.IO.File.Exists(string.Format(@"{0}/{1}", ApplicationData.Current.LocalFolder.Path, fileName); }

Compruebe si existe un archivo en Windows Phone 8 y WinRT sin excepción


Microsoft ha agregado una nueva función a StorageFile en Windows 8.1 para permitir a los ingenieros del usuario determinar si se puede acceder a un archivo: IsAvailable



Traté de escribir el mío usando viejos trucos:

  1. GetFileAttributesEx () siempre parece terminar con ERROR_ACCESS_DENIED si el archivo se selecciona a través de FileOpenPicker;
  2. Lo mismo para FindFirstFileEx ();
  3. _stat () siempre termina con ENOENT cuando el archivo se selecciona a través de FileOpenPicker;
  4. La opción CreateFile2 () con CREATE_NEW funciona: si el archivo existe, fallará con INVALID_HANDLE_VALUE return value y ERROR_FILE_EXISTS último error; si el archivo no existe, debe recordar eliminar el archivo creado posteriormente.

En general, es mejor que sigas con el método de manejo de excepciones.


Dim myPath As StorageFolder If (From i In Await KnownFolders.MusicLibrary.GetFoldersAsync() Where i.Name = "PodBong").Count = 1 Then myPath = Await KnownFolders.MusicLibrary.GetFolderAsync("PodBong") Else myPath = Await KnownFolders.MusicLibrary.CreateFolderAsync("PodBong") End If