Accéder à un fichier de Appdata

turgodi -  
 turgodi -
Hello, je souhaiterais utiliser un fichier qui est dans appdata, mais le dossier a un nom aléatoire qui change tout le temps du style :
Pendant 10min : Jeu\378\dossier\Monfichier.txt
Puis 10min après : Jeu\281\dossier\Monfichier.txt

Voici mon code actuel :

...etc(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "Jeu\" + "dossier\Monfichier.txt")

Merci.

Mais cela ne marche pas à moins que je mette l'adresse complète du fichier...

2 réponses

  1. ElementW Messages postés 5690 Statut Contributeur 1 293
     
    'lut,
    chemin + "\machin" + truc
    ...
    Grrrrrrrrrrrrrr!!! Path.Combine, mince!
    Ça existe pas pour rien, et je te conseille de considérer tout ajout de chemins avec
    +
    et des séparateurs (
    \
    ou
    /
    ) codés en dur comme une hyper mega très mauvaise pratique. Utilise Path.Combine pour tous tes chemins, et si tu as besoin du caractère séparateur, Path.DirectorySeparatorChar.
    Ta ligne devient donc
    ...etc(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Jeu", "dossier", "Monfichier.txt"))

    from human import idiocy
    del idiocy
    1
  2. turgodi
     
    Merci pour ta réponse, je ne connaissais pas, c'est super.
    Malheuresement j'ai encore une erreur, pourrais tu m'aider encore une fois ?
    Voici tous les détails qui te sont nécéssaires :

    Code actuel :
    Dim lolol As Net.Mail.Attachment = New Net.Mail.Attachment(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Macromedia", "monfichier.txt"))
    MyMailMessage.Attachments.Add(lolol)

    Et pour que tu comprennes mieux voici le chemin complet avec entre parenthèses la partie qui change tout le temps :

    C:\Users\MonNom\AppData\Roaming\Macromedia\Flash Player\#SharedObjects\(B3A8LUQY)\www.realmofthemadgod.com\monfichier.txt

    Merci encore
    0
    1. ElementW Messages postés 5690 Statut Contributeur 1 293
       
      Le chemin que tu fournis n'est pas complet,
      Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
      donne le
      C:\Users\MonNom\AppData\Roaming
      , tu mets le
      "Macromedia"
      , mais il manque toute la partie
      #SharedObjects\(B3A8LUQY)\www.realmofthemadgod.com\
      .
      Le hic en plus c'est que Path.Combine ne prend que jusqu'à 4 paramètres (alors qu'il aurait très bien pu en prendre une infinité grâce aux listes de paramètres), donc il faut imbriquer...
      Le "B3A8LUQY" change tout le temps?
      Il faut jouer plus sophistiqué: on va devoir inspecter chaque dossier de #SharedObjects, et vérifier s'il contient
      www.realmofthemadgod.com\monfichier.txt
      Je rédige le code, je l'enverrais dans un prochain commentaire...
      0
    2. turgodi
       
      Oui c'est ça, c'est le problème, le chemin n'est jamais le même et je n'arrive pas à instaurer une recherche pour trouver mon fichier dans appdata non plus...
      Merci encore, vous êtes très aimable
      0
    3. ElementW Messages postés 5690 Statut Contributeur 1 293
       
      Voilà, ceci devrait trouver le bon chemin et le stocker dans
      chemin
      :
      Dim chemin As String
      For Each dir As String In Directory.GetDirectories(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
              "Macromedia", "Flash Player", "#SharedObjects"))
          chemin = Path.Combine(dir, "www.realmofthemadgod.com", "monfichier.txt")
          If File.Exists(chemin) Then
              Exit For 'On arrête la boucle car on a trouvé
          End If
      Next
      Après, on adapte:
      Dim lolol As Net.Mail.Attachment = New Net.Mail.Attachment(chemin)
      MyMailMessage.Attachments.Add(lolol)
      0
    4. turgodi
       
      ça marche, ça m'a beaucoup appris, merci d'avoir pris votre temps pour m'aider
      Bonne soirée et bonne continuation
      0