2010-07-14 6 views
2

Я пытаюсь читать из файла внутри папки AppData текущего пользователя в C#, но я все еще учусь, так я это:Чтение из файла в текущей папке AppData пользователя для 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(); 

Но я не знаю, что вводить, чтобы убедиться, что это всегда папка текущего пользователя.

+0

Также я использую Microsoft Visual Studio C# 2010 Express – Zeenjayli

ответ

5

я мог бы быть недопонимание вашего вопроса, но если вы хотите, чтобы получить текущую папку пользователя AppData вы могли бы использовать это:

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

так что ваш код может стать:

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); 
    } 
} 

или еще короче :

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

Посмотрите на метод Environment.GetFolderPath и перечисление Environment.SpecialFolder. Для того, чтобы получить папку данных приложения текущего пользователя, вы можете использовать:

  • Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) получить каталог приложений для текущего, роумингового пользователя. Этот каталог хранится на сервере, и он загружается в локальную систему, когда пользователь входит в систему, или
  • Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), чтобы получить каталог приложений для текущего, пользователя без роуминга. Этот каталог не используется совместно с компьютерами в сети.

Кроме того, используйте Path.Combine совместить каталог и имя файла в полный путь:

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

Рассмотрите возможность использования File.ReadLines читать строки из файла. См. Примечания к MSDN page о различиях между File.ReadLines и File.ReadAllLines.

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