2015-11-21 1 views
0

Je me suis appris à coder ces derniers temps parce que je m'ennuie. J'essaie de charger un fichier XML au démarrage et de mettre le contenu de ce fichier dans une liste, puis enregistrez le contenu de la liste dans le fichier à proximité. C'est exactement ce que j'ai maintenant. Cependant, je veux être en mesure de charger à partir d'AppData ainsi que de sauvegarder dans le dossier AppData sans avoir à taper le chemin complet. J'ai essayé d'utiliser "% AppData%/Roaming/MyApp/data.xml" mais cela ne fonctionne pas et déclenche une exception.Comment enregistrer et charger un fichier XML dans AppData?

Voici ce que j'ai maintenant:

StreamReader sr = new StreamReader("data.xml"); 
      line = sr.ReadLine(); 
      while (line != null) { 
       Streamers.Items.Add(line); 
       line = sr.ReadLine(); 
      } 
      Streamers.DataSource = line; 
      Streamers.Sorted = true; 
      sr.Close(); 
      Console.ReadLine(); 
+0

Quelle est l'exception? –

Répondre

2

Vous pouvez utiliser GetFolderPath

string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 

vous pouvez également consulter this answer pour plus d'informations.

Mise à jour

Notez que vous devez disposer des droits d'administrateur pour accéder à ce dossier.

Pour Access denied erreur vérifier ces deux réponses:

Number one

Le répertoire %AppData% est un répertoire système protégé. Windows va essayer de bloquer tout accès à ce répertoire dès que l'accès n'a pas été autorisé (Un accès d'un autre utilisateur que l'administrateur ).

Number two

J'utiliser System.IO.Path.Combine(...) au lieu de string.Conact(...) dans cette situation. Comme ceci ...

string path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), 
"Programım"); 
+0

J'ai réussi à créer un dossier mais je ne peux pas enregistrer le XML là-bas. Je reçois un accès est refusé exception. –

+0

Très bien. J'ai réussi à écrire dans le dossier AppData. Merci beaucoup. Maintenant, comment puis-je lire à partir de là? Auparavant, je viens d'utiliser StreamReader sr = new StreamReader ("data.xml"); qui vient juste de lire celui trouvé localement et pas celui en appdata –

+0

@JarrettMitchell try 'chaîne path = Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData); StreamReader sr = new StreamReader (chemin + "\\ data.xml"); ' –