48 votes

Comment vérifier si le fichier existe dans une application Windows Store?

Existe-t-il un autre moyen de vérifier si un fichier existe dans une application Windows Store?

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

26voto

keyboardP Points 44625

Selon la accepté de répondre dans ce post, il n'y a pas d'autre moyen pour le moment. Toutefois, le Fichier IO équipe envisage la modification de la l'api de sorte qu'elle retourne null au lieu de lancer une exception.

Citation du message lié:

Actuellement, la seule façon de vérifier si un fichier existe, c'est d'attraper le FileNotFoundException. Comme cela a été souligné avoir explicite vérifier et l'ouverture est une condition de course et comme tel, je ne m'attends pas qu'il y a des fichier existe API ajouté. Je crois que le Fichier de l'équipe des OI (Je ne suis pas sur que l'équipe donc je ne sais pas pour vous, mais c'est ce que j'ai entendu) envisage cette API renvoie une valeur null au lieu de les jeter si le fichier n'existe pas.

13voto

Billdr Points 913

Ce peut-être vieux, mais on dirait qu'ils ont changé la façon dont ils veulent vous à cette approche.

Vous êtes censé pour tenter de rendre le fichier, puis de nouveau à la baisse si le fichier existe déjà. Ici est la documentation sur elle. Je suis à jour parce que c'était le premier résultat de ma recherche sur Google pour ce problème.

Donc, dans mon cas je veux ouvrir un fichier, ou le créer s'il n'existe pas. Ce que j'ai à faire est de créer un fichier et de l'ouvrir si elle existe déjà. Comme suit:

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

8voto

Jap Points 71

Je suis tombé sur ce blog par Shashank Yerramilli qui offre une bien meilleure réponse.

J'ai testé ce pour windows phone 8 et il fonctionne. Ne l'ai pas testé sur windows store si

Je copie ici la réponse

Pour windows RT app:

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

Pour Windows Phone 8

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

Vérifier si un fichier existe dans Windows Phone 8 et WinRT, sans exception

3voto

Vous pouvez utiliser l'ancien appel Win32 comme ceci pour vérifier si le répertoire existe ou non:

 GetFileAttributesExW(path, GetFileExInfoStandard, &info);

return (info.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ? false: true;
 

Cela fonctionne dans les applications Desktop et Metro: http://msdn.microsoft.com/en-us/library/windows/desktop/aa364946%28v=vs.85%29.aspx

3voto

satur9nine Points 3901

Microsoft a ajouté une nouvelle fonction à StorageFile dans Windows 8.1 pour permettre aux ingénieurs utilisateurs de déterminer si un fichier est accessible: IsAvailable

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X