.NET TIPS

ディレクトリを作成/削除/リネーム/移動するには?

デジタルアドバンテージ
2003/07/18

 ディレクトリ(フォルダとも呼ばれる)の作成/削除/リネーム/移動などの操作はすべてDirectoryクラス(System.IO名前空間)にstaticなメソッドとしてまとめられている。なお、ディレクトリのコピーについては、単体でそれを行えるメソッドは.NET Frameworkのクラス・ライブラリには用意されていない(コードはC#の場合)。

ディレクトリの作成

 ディレクトリを作成するには、DirectoryクラスのCreateDirectoryメソッドを使用する。

Directory.CreateDirectory("newdir");
Directory.CreateDirectory(@"anotherdir\subdir");
Directory.CreateDirectory(@"c:\tmp\tmpdir");

 パラメータには、新しく作成するディレクトリ名を指定する。“anotherdir\subdir”のようにネストしたディレクトリを指定した場合にも、それぞれのディレクトリ(この場合にはanotherdirとsubdirの2つ)が作成される。

 なお、すでに存在しているディレクトリやファイルと同名のディレクトリを作成しようとしても、CreateDirectoryメソッドはエラーにならない。

ディレクトリの削除

 ディレクトリを削除するには、DirectoryクラスのDeleteメソッドを使用する。

Directory.Delete("newdir");
Directory.Delete(@"anotherdir\subdir");
Directory.Delete(@"c:\tmp\tmpdir");

 パラメータには、削除するディレクトリ名を相対指定あるいはフルパス指定する。この場合、削除できるのは空でないディレクトリ(ディレクトリ内にファイルやサブディレクトリを含まないディレクトリ)のみである。また、“anotherdir\subdir”や“c:\tmp\tmpdir”のようにネストしたディレクトリを指定しても、削除されるディレクトリは1つだけ(この場合にはsubdirやtmpdir)である。

 空でないディレクトリを、そこに含まれるサブディレクトリやファイルも含めて削除したい場合には、Deleteメソッドの第2パラメータにtrueを指定すればよい。もちろんこれを使用する場合には十分な注意が必要だ。

ディレクトリのリネーム(名前変更)と移動

 ディレクトリのリネーム(名前変更)や移動は、DirectoryクラスのMoveメソッドを使用する。パラメータには、移動元と移動先のディレクトリ名を相対指定あるいはフルパス指定する。

Directory.Move("newdir", "moveddir");
Directory.Move("anotherdir", @"\tmp\anotherdir");

 移動先のディレクトリがすでに存在する場合には、Moveメソッドはエラーとなる。すでに存在するディレクトリの配下にディレクトリを移動する場合には、移動先でのディレクトリ名までを指定する必要がある。なお、異なるボリューム間でのディレクトリの移動はできない。

DirectoryInfoクラスとの違い

 本稿で述べたディレクトリの操作は、DirectoryInfoクラスを使用しても同様に行うことができる。Directoryクラスはstaticなメソッドばかりからなるユーティリティ的なクラスであるのに対して、DirectoryInfoクラスではまず特定のディレクトリを指定してインスタンスを作成し、それに対して各メソッドの呼び出しを行う。1つのディレクトリに対して一連の操作を行う場合には、DirectoryInfoクラスを使用すべきだろう。リファレンス・マニュアルには、Directoryクラスのstaticなメソッドでは、毎回ファイルに対するセキュリティのチェックが実行されるが、DirectoryInfoクラスのインスタンス・メソッドでは必ずしもそうではないといったことも記述されている。End of Article

カテゴリ:クラス・ライブラリ 処理対象:ディレクトリ&ファイル
使用ライブラリ:Directoryクラス(System.IO名前空間)
 
この記事と関連性の高い別の.NET TIPS
ディレクトリが空かどうかを調べるには?
ファイルやディレクトリの一覧を取得するには?
ファイルやディレクトリをすべてのサブディレクトリから検索するには?
ファイルやディレクトリの一覧を効率的に取得するには?
ファイルやディレクトリの存在を確認するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間