Чтение из файла в текущей папке пользовательских приложений для 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();
Но я не знаю, что печатать, чтобы убедиться, что это всегда папка текущего пользователя.
3 ответа
Я мог бы неправильно понять ваш вопрос, но если вы хотите получить папку 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);
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)
Взгляните на метод 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 о различиях между File.ReadLines
а также File.ReadAllLines
,
foreach( var line in File.ReadLines( path ) )
{
Console.WriteLine( line );
}