2010-07-14 11 views
2

Je suis en train de lire un fichier dans le dossier AppData de l'utilisateur actuel en C#, mais j'apprends encore si j'ai ceci:lecture d'un fichier dans le dossier courant AppData utilisateur pour C#

int counter = 0; 
string line; 

// Read the file and display it line by line. 
System.IO.StreamReader file = new System.IO.StreamReader("c:\\test.txt"); 
while ((line = file.ReadLine()) != null) 
{ 
    Console.WriteLine(line); 
    counter++; 
} 

file.Close(); 

// Suspend the screen. 
Console.ReadLine(); 

Mais je ne sais pas quoi taper pour m'assurer que c'est toujours le dossier de l'utilisateur actuel.

+0

Aussi j'utilise Microsoft Visual Studio C# 2010 Express – Zeenjayli

Répondre

5

je pourrais être mal compris votre question, mais si vous voulez obtenir le dossier en cours utilisateur AppData vous pouvez utiliser ceci:

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

si votre code pourrait devenir:

string appDataFolder = Environment.GetFolderPath(
    Environment.SpecialFolder.ApplicationData 
); 
string filePath = Path.Combine(appDataFolder, "test.txt"); 
using (var reader = new StreamReader(filePath)) 
{ 
    string line; 
    while ((line = reader.ReadLine()) != null) 
    { 
     Console.WriteLine(line); 
    } 
} 

ou encore plus court :

string appDataFolder = Environment.GetFolderPath(
    Environment.SpecialFolder.ApplicationData 
); 
string filePath = Path.Combine(appDataFolder, "test.txt"); 
File.ReadAllLines(filePath).ToList().ForEach(Console.WriteLine); 
0
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) 
0

Jetez un oeil à la méthode Environment.GetFolderPath et à l'énumération Environment.SpecialFolder. Pour obtenir le dossier de données d'application de l'utilisateur actuel, vous pouvez utiliser:

  • Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) pour obtenir le répertoire d'applications pour l'utilisateur actuel, itinérance. Ce répertoire est stocké sur le serveur et il est chargé sur un système local lorsque l'utilisateur se connecte, ou
  • Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) pour obtenir le répertoire d'application de l'utilisateur actuel non non itinérant. Ce répertoire n'est pas partagé entre les ordinateurs sur le réseau.

Aussi, utilisez Path.Combine de combiner votre répertoire et le nom du fichier dans un chemin d'accès complet:

var path = Path.Combine(directory, "test.txt"); 

Pensez à utiliser File.ReadLines pour lire les lignes du fichier. Voir les remarques sur le MSDN page sur les différences entre File.ReadLines et File.ReadAllLines.

foreach(var line in File.ReadLines(path)) 
{ 
    Console.WriteLine(line); 
}