Accéder à un fichier de Appdata

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. Contributeur
    '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
    1. 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. Contributeur
        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. 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. Contributeur
        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. ça marche, ça m'a beaucoup appris, merci d'avoir pris votre temps pour m'aider
        Bonne soirée et bonne continuation
        0