IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

File.Exists renvoie False sur un fichier présent sur le disque dur du PC ?!


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2012
    Messages : 22
    Points : 16
    Points
    16
    Par défaut File.Exists renvoie False sur un fichier présent sur le disque dur du PC ?!
    Bonjour,
    J'ai un programme développé avec VS2008 et en VB.Net 4.
    Il fonctionnait très bien sur un PC cible avec Windows 8.1, or depuis que ce dernier a été réinstallé, je suis confronté à un problème avec la méthode File.Exists : elle me renvoie False sur un fichier pourtant bien présent et ouvrable par ailleurs !

    J'ai essayé de modifier les droits sur le dossier ou est stocké ce fichier (du style C:\Extranet\.......\mabase.mdb) : j'ai mis les droits en lecture pour l'utilisateur du PC sur le dossier Extranet, mais le résultat est le même.
    J'ai essayé de lancer mon appli en Administrateur, idem.

    Là, je sèche, je ne comprend pas ce qui peut se passer...

    Des idées ?

    Merci !

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2013
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 93
    Points : 127
    Points
    127
    Par défaut
    Peux montrer ton code ?
    Ou essayer de mettre une exception ?
    Car la méthode File.Exists fonctionne très bien chez moi.

    Voici les notes sur cette méthode :
    La méthode Exists ne doit pas être utilisée pour la validation de chemin d'accès car elle vérifie simplement si le fichier spécifié dans path existe. Le passage d'un chemin d'accès non valide à Exists retourne false. Pour vérifier si le chemin d'accès contient des caractères non valides, vous pouvez appeler la méthode GetInvalidPathChars pour récupérer les caractères valides pour le système de fichiers. Vous pouvez également créer une expression régulière pour tester si le chemin d'accès est valide pour votre environnement. Pour obtenir des exemples de tracés acceptables, consultez le File.

    Sachez qu'un autre processus peut effectuer une opération sur le fichier entre le moment où vous appelez la méthode Exists et celui où vous effectuez une autre opération sur le fichier, telle que Delete.

    Le paramètre path est autorisé à spécifier des informations sur le chemin d'accès relatif ou absolu. Les informations sur le chemin d'accès relatif sont interprétées comme étant relatives au répertoire de travail actif. Pour obtenir le répertoire de travail actif, consultez GetCurrentDirectory.

    Si path décrit un répertoire, cette méthode retourne false. Les espaces de fin sont supprimés du paramètre path avant de déterminer si le fichier existe.

    La méthode Exists retourne false si une erreur se produit lorsqu'on tente de déterminer si le fichier spécifié existe. Cela peut se produire dans les situations qui déclenchent des exceptions telles que le passage d'un nom de fichier avec des caractères non valides ou trop de caractères, un disque défaillant ou manquant, ou si l'appelant n'est pas autorisé à lire le fichier.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2012
    Messages : 22
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par Kangourex Voir le message
    Peux montrer ton code ?
    Pas de grande fantaisie dans mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                If Not File.Exists(G_CheminAppliMDB & BDDName) Then
                    MessageBox.Show("Base de données '" & G_CheminAppliMDB & BDDName & "' introuvable", G_SoftName, MessageBoxButtons.OK, MessageBoxIcon.Error)
                    Exit Sub
                Else
    Citation Envoyé par Kangourex Voir le message
    Ou essayer de mettre une exception ?
    Il n'y a pas de message d'erreur, juste la fonction renvoie toujours False...

    Citation Envoyé par Kangourex Voir le message
    Car la méthode File.Exists fonctionne très bien chez moi.
    J'ai jamais eu de problème non plus jusqu'a maintenant !

    Dans les notes sur cette méthode, il est bien évoqué un pb de permissions : "ou si l'appelant n'est pas autorisé à lire le fichier.", mais c'est peut-être complètement autre chose... (je sens le truc gros comme une maison qui va bien me foutre les boules quand je vais trouver !)

    En attendant, j'ai modifié mon EXE en rajoutant un Textbox et un bouton "Existe ?" pour tester mon File.Exists() sur différents chemins sur la machine distante, pour voir si je trouve au moins un fichier pour lequel je récupère un True !

  4. #4
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Points : 8 538
    Points
    8 538
    Par défaut
    On pourrait voir ce que contiennent les variables G_CheminAppliMDB et BDDName ?

    Pour concaténer des chemins, mieux vaut utiliser Path.Combine que de faire ça soit même avec des &.

    http://msdn.microsoft.com/fr-fr/libr...v=vs.110).aspx

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2012
    Messages : 22
    Points : 16
    Points
    16
    Par défaut
    Bon, j'ai fini par trouver le pb !
    En fait, il y avait un caractère invisible dans ma variable G_CheminAppliMDB dont la valeur est récupérée d'un fichier config (le caractère était donc dans ce fichier, mais aucune idée de comment il a pu arriver là... Le code caractère est \0xFEFF ).

    A noter qu'à priori, Path.Combine ne nettoie pas ces caractères indésirables, car même en utilisant cette fonction plutôt que la concaténation, le résultat était le même.

    En tous cas, merci pour vos contributions !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Protéger les fichiers présents sur mon serveur
    Par teramp3 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 17/11/2008, 19h08
  2. Réponses: 3
    Dernier message: 02/09/2008, 10h22
  3. Réponses: 5
    Dernier message: 25/05/2007, 15h20
  4. XMLHttpRequest ouvrant un fichier présent sur un autre serveur
    Par LeSkaMan dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 22/01/2007, 19h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo