3

C#で現在のユーザーのappdataフォルダー内のファイルから読み取ろうとしていますが、まだ学習中なので、これがあります:

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

しかし、常に現在のユーザーのフォルダーであることを確認するために何を入力すればよいかわかりません。

4

3 に答える 3

6

私はあなたの質問を誤解しているかもしれませんが、現在のユーザー 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);
于 2010-07-14T06:18:14.760 に答える
1
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)
于 2010-07-14T06:19:52.880 に答える
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 ページの備考を参照してください。File.ReadLinesFile.ReadAllLines

 foreach( var line in File.ReadLines( path ) )
 {
     Console.WriteLine( line );
 }
于 2010-07-14T06:41:32.663 に答える