[Tips][フォルダー操作] まとめ

これまでに紹介した「フォルダー操作」Tipsは下記の通りです。

  1. フォルダーを作成する
  2. フォルダーを移動する
  3. フォルダーを削除する
  4. フォルダーをコピーする
  5. フォルダーの存在を確認する
  6. 現在の作業フォルダーを取得/設定する
  7. フォルダーの作成日時を取得/設定する
  8. フォルダーの更新日時を取得/設定する
  9. フォルダーのアクセス日時を取得/設定する
  10. 指定したフォルダーのサブフォルダーを取得する
  11. 指定したフォルダーのサブフォルダーを再帰的に取得する
  12. 指定したフォルダー内のファイルを取得する
  13. 論理ドライブを取得する
  14. 指定したパスの親フォルダーを取得する
  15. 特別なフォルダーのパスを取得する

[Tips][フォルダー操作] 特別なフォルダーのパスを取得する

EnvironmentクラスGetFolderPathメソッドを使用すると「マイドキュメント」「デスクトップ」「お気に入り」といった特別なフォルダーを取得することができます。

GetFolderPathメソッドの引数にはEnvironment.SpecialFolder 列挙体(下記)を指定します。

Environment.SpecialFolder 列挙体
メンバ名 説明
ApplicationData 現在のローミング ユーザーのアプリケーション固有のデータの共通リポジトリとして機能するディレクトリ
CommonApplicationData すべてのユーザーが使用するアプリケーション固有のデータの共通リポジトリとして機能するディレクトリ。
CommonProgramFiles アプリケーション間で共有されるコンポーネント用のディレクトリ。
Cookies インターネット cookies の共通リポジトリとして機能するディレクトリ。
Desktop 物理的なファイル システム上の場所ではない論理的なデスクトップ。
DesktopDirectory デスクトップ上のファイル オブジェクトを物理的に格納するために使用されるディレクトリ。
Favorites お気に入り
History インターネットの履歴ディレクトリ
InternetCache インターネットのキャッシュディレクトリ
LocalApplicationData ローカルアプリケーションデータ用ディレクトリ
MyComputer マイコンピューターディレクトリ
MyDocuments マイドキュメント
MyMusic マイミュージック
MyPictures マイピクチャ
Personal ドキュメントの共通ディレクトリ
ProgramFiles プログラムファイルディレクトリ
Programs ユーザーのプログラムグループを格納するディレクトリ
Recent 最近使ったドキュメントを格納するディレクトリ
SendTo 「送る」メニュー項目を格納するディレクトリ
StartMenu [スタート]メニュー項目を格納するディレクトリ
Startup 「スタートアップ」プログラムグループに対応するディレクトリ
System システムディレクトリ
Templates ドキュメントのテンプレートを置くディレクトリ

下記はMy Documentsのフォルダーパスを取得する例です。

VBの例

Dim strMyDoc As String

'マイドキュメントフォルダを取得する
strMyDoc = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)

'取得したパス文字列を表示する
MessageBox.Show("マイドキュメントのパスは[" & strMyDoc & "]です。")

C#の例

string strMyDoc;

//マイドキュメントフォルダを取得する
strMyDoc = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

//取得したパス文字列を表示する
MessageBox.Show("マイドキュメントのパスは[" + strMyDoc + "]です。");

[Tips][フォルダー操作] 指定したパスの親フォルダーを取得する

指定したパスの親フォルダーを取得するにはDirectoryクラスGetParentメソッドを使用します。

GetParentメソッドの戻り値はDirectoryInfo型となっており、返された値のNameプロパティに親フォルダー名が格納されています。

下記は”C:\Work\Child\Test.txt”の親フォルダー(Child)を取得する例です。

VBの例

Dim strPath As String = "C:Work\Child\Test.txt"
Dim strParentDir As IO.DirectoryInfo

'C:\Work\Child\Test.txt の親フォルダーを取得
strParentDir = IO.Directory.GetParent(strPath)

MessageBox.Show(strParentDir.Name)

C#の例

string strPath = @"C:Work\Child\Test.txt";
System.IO.DirectoryInfo strParentDir;

// C:\Work\Child\Test.txt の親フォルダーを取得
strParentDir = System.IO.Directory.GetParent(strPath);

MessageBox.Show(strParentDir.Name);

[Tips][フォルダー操作] 論理ドライブを取得する

使用しているPCの論理ドライブを取得するには、DirectoryクラスGetLogicalDrivesメソッドを使用します。

GetLogicalDrivesメソッドは論理ドライブを<論理ドライブ名>:\の形式で返します。

下記は論理ドライブを取得する例です。

VBの例

'論理ドライブを取得する
Dim strDrives() As String = System.IO.Directory.GetLogicalDrives()

C#の例

// 論理ドライブを取得する
string[] strDrives = System.IO.Directory.GetLogicalDrives();

[Tips][フォルダー操作] 指定したフォルダー内のファイルを取得する

指定したフォルダー内にあるファイルを取得するにはDirectoryクラスGetFilesメソッドを使用します。

GetFilesメソッドの第1引数にはファイルを取得したいフォルダーのパスを渡します。

第1引数のみを指定した場合には、指定したフォルダー内のファイルを取得することができます。

VB版 指定したフォルダー内のファイルを取得する例

Dim targetDir As String = "C:\Work"

'C:\Workにあるファイルを取得する
Dim strFiles() As String = IO.Directory.GetFiles(targetDir)

C#版 指定したフォルダー内のファイルを取得する例

string targetDir = @"C:\Work";

// C:\Workにあるファイルを取得する
string[] strFiles = System.IO.Directory.GetFiles(targetDir);

GetFilesメソッドは拡張子を指定してファイルを取得することもできます。

この場合は、第1引数にはファイルを取得するフォルダーのパスを、第2引数には検索パターン(取得したいファイルの拡張子。例えば”*.txt”)を渡します。

VB版 指定したフォルダーで拡張子を指定してファイルを取得する例

Dim targetDir As String = "C:\Work"

'C\Workにあるテキストファイルを取得する
Dim strTxtFiles() As String = IO.Directory.GetFiles(targetDir, "*.txt")

C#版 指定したフォルダーで拡張子を指定してファイルを取得する例

string targetDir = @"C:\Work";

// C\Workにあるテキストファイルを取得する
string[] strTxtFiles = System.IO.Directory.GetFiles(targetDir, "*.txt");

ここまでに紹介した例では、GetFilesメソッドは指定したフォルダーにあるファイルだけを返し、サブフォルダー以下にあるファイルは取得することができません。

サブフォルダー以下にあるファイルも取得したい場合は、第3引数に検索オプション(SearchOption列挙体)を渡す必要があります。

下記は、検索オプションションを指定して、指定したフォルダーとその中にあるサブフォルダーからファイルを取得する例です。

VB版 検索オプションを指定してファイルを取得する例

Dim targetDir As String = "C:\Work"

'C:\Workとその中のすべてのサブフォルダーにあるファイルを取得する
Dim strAllFiles() As String = IO.Directory.GetFiles(targetDir, "*.*", System.IO.SearchOption.AllDirectories)

C#版 検索オプションを指定してファイルを取得する例

string targetDir = @"C:\Work";

// C:\Workとその中のすべてのサブフォルダーにあるファイルを取得する
string[] strAllFiles = System.IO.Directory.GetFiles(targetDir, "*.*", System.IO.SearchOption.AllDirectories);