Чтение из файла в текущей папке приложения пользователя для C # - PullRequest
2 голосов
/ 14 июля 2010

Я пытаюсь прочитать из файла в папке 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 ]

5 голосов
/ 14 июля 2010

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

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);
1 голос
/ 14 июля 2010
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)
0 голосов
/ 14 июля 2010

Обратите внимание на метод 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 );
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...