ここまでのサンプルでは、ファイルはすべてファイル名を指定するだけでした。「EXEファイルと同じ場所に、この名前のファイルを用意する」という形ですね。
しかし、普通、ファイルを利用するという場合は、例えば「マイドキュメント」フォルダの中など、ファイルを保管しているところにあるものを指定して読み込ませたりするのが一般的です。こうした「他の場所にあるファイル」を扱うにはどうするのでしょう。
C#の場合、ファイルやフォルダの扱いは、原則として「そのファイルやフォルダのパスを示すテキスト」を利用します。パスさえ用意できれば、それを元に必要な操作が行えるようになっているのです。では、ファイルのパスはどうやって取り出せばいいのか。これは、「主な場所(フォルダ)のファイルパスを取り出す」「フォルダの中や外側のフォルダやファイルのパスを取り出す」といったやり方を覚え、それを組み合わえて処理するのが基本といえます。
例えば、「マイドキュメント」にあるファイルならば、まず「マイドキュメント」のパスを調べ、その中にあるファイルを取り出し、そこから使いたいものを選ぶ、というような手順で必要なファイルのパスを得ることができます。
では、まずは「重要なフォルダのパス」を得る方法から整理しましょう。Windowsでは、システムが管理している特別なフォルダというのがあります。こうしたフォルダは、
Systemパッケージの「
Environment」というクラスの「
SpecialFolder」というプロパティにまとめられています。この
Environment.SpecialFolderに用意されている主なプロパティを以下に整理しましょう。
・Environment.SpecialFolderのフォルダApplicationData――ホームディレクトリ内の「
AppData」フォルダ
MyComputer――「マイコンピュータ」
MyDocuments――「マイドキュメント」
MyPictures――「マイピクチャー」
MyVideos――「マイビデオ」
MyMusic――「マイミュージック」
Desktop――デスクトップ
ProgramFiles――「Program Files」フォルダ
Windows――Windowsのインストールフォルダ
これらのプロパティでは、「
SpecialFolder」という値としてそれぞれのフォルダが保管されています。これは列挙体の値で、これらの値からそのフォルダのパスを得るのに以下のようなメソッドを用います。
string 変数 = Environment.GetFolderPath(《SpecialFolder》);
これで、
SpecialFolderにある特別なフォルダのパスがひと通り得られるようになります。例えば「マイドキュメント」フォルダのパスを得たければ、
string doc = Environment.GetFolderPath
(Environment.SpecialFolder.MyDocuments);
こんな具合にすればいいわけです。それ以外のフォルダも、
Environment.SpecialFolderに用意されているフォルダは基本的に同じやり方でパスを得られます。