Comment savoir si un fichier existe en C # / .NET?

186

Je voudrais tester une chaîne contenant un chemin vers un fichier pour l'existence de ce fichier (quelque chose comme le -etest en Perl ou le os.path.exists()en Python) en C #.

Daren Thomas
la source

Réponses:

303

Utilisation:

File.Exists(path)

MSDN: http://msdn.microsoft.com/en-us/library/system.io.file.exists.aspx

Edit: Dans System.IO

Daniel Jennings
la source
14
File.Exists (chemin) renvoie false même si le fichier existe MAIS l'appelant n'a pas l'autorisation de le lire. Existe-t-il une manière différente de gérer ce genre de situations et de vérifier si un fichier existe même si l'appelant ne peut pas le lire?
ADTC
3
@ADTC: du point de vue de la sécurité, cela semble normal que cela fonctionne de cette façon, du point de vue du développeur, cela peut rendre les choses plus compliquées. Obtenez-vous une exception dans ce cas si vous essayez de créer un fichier?
user276648
2
@ADTC vient de trébucher et a pensé que je pourrais mentionner les répertoires drop-box. Ceux-ci peuvent être configurés là où vous avez une autorisation de création ou d'écriture, mais aucune autorisation de lecture. Non pas que cela concerne directement cette question, mais simplement qu'ils ne sont pas aussi étranges qu'on pourrait le penser.
Ukko
1
Note latérale: File.Exists renvoie False sur Google Drive File Stream G: drive, si la casse du chemin ne correspond pas exactement à ce qui se trouve réellement sur G :. Habituellement, sur n'importe quel boîtier de disque physique n'a pas d'importance, alors je me demande, y a-t-il quelque chose qui ne va pas avec la méthode Exists?
CTZStef
1
@CTZStef c'est la bizarrerie du lecteur virtuel de Google plutôt que de la méthode du framework.
Eugene Mayevski 'Rappel
53

System.IO.File :

using System.IO;

if (File.Exists(path)) 
{
    Console.WriteLine("file exists");
} 
Peter Hoffmann
la source
4

Donnez le chemin complet en entrée. Évitez les chemins relatifs.

 return File.Exists(FinalPath);
shivi
la source