ファイルに対するコピー/削除/リネーム/移動などの操作はすべてFileクラス(System.IO名前空間)にstaticなメソッドとしてまとめられている。
ファイルのコピー
ファイルをコピーするためには、FileクラスのCopyメソッドを使用する(コードはC#の場合)。
File.Copy("origfile.txt", "newfile.txt");
File.Copy("origfile.txt", @"backup\newfile.txt");
File.Copy("origfile.txt", @"c:\tmp\newfile.txt");
パラメータには、コピー元とコピー先のファイル名を指定する。それぞれのパラメータでは、カレント・ディレクトリのファイルや、ファイルの相対パス、ファイルの絶対パスを指定することができる。なお、「@"c:\tmp\newfile.txt"」という記述は、「"c:\\tmp\\newfile.txt"」と同等だ。
ディレクトリやファイルにアクセス権がない場合、コピー元のファイルがない場合、コピー先のファイルがすでに存在する場合などには例外が発生する。すでにコピー先のファイルが存在していて上書きでコピーを行う場合には、3つ目のパラメータとしてtrueを指定すればよい。
File.Copy("origfile.txt", "newfile.txt", true);
File.Copy("origfile.txt", @"backup\newfile.txt", true);
File.Copy("origfile.txt", @"c:\tmp\newfile.txt", true);
ファイルの削除
ファイルの削除はFileクラスのDeleteメソッドを使用する。パラメータに指定する削除対象となるファイル名は、Copyメソッドと同様に、カレント・ディレクトリのファイルや、ファイルの相対パス、ファイルの絶対パスを指定することができる。
File.Delete("newfile.txt");
File.Delete(@"backup\newfile.txt");
File.Delete(@"c:\tmp\newfile.txt");
ファイルのリネーム(名前変更)と移動
ファイルのリネーム(名前変更)や移動は、FileクラスのMoveメソッドを使用する。パラメータには、移動元と移動先のファイル名を指定する。それぞれには、カレント・ディレクトリのファイルや、ファイルの相対パス、ファイルの絶対パスを指定できる。
File.Move("origfile.txt", "newfile.txt");
File.Move("origfile.txt", @"backup\orig.txt");
File.Move("origfile.txt", @"c:\tmp\newfile.txt");
移動先のファイル名が移動元と異なる場合には、ファイル名をリネームしたことになる(FileクラスにはRenameメソッドはない)。ただし、ファイル名を変更しない場合でも、移動先にはファイル名を指定しなければならない(移動先としてディレクトリの指定はできない)。
FileInfoクラスとの違い
本稿で述べたファイルの操作は、FileInfoクラスを使用しても同様に行うことができる。Fileクラスはstaticなメソッドばかりからなるユーティリティ的なクラスであるのに対して、FileInfoクラスではまず特定のファイルを指定してインスタンスを作成し、それに対して各メソッドの呼び出しを行う。1つのファイルに対して一連のファイル操作を行う場合にはFileInfoクラスを使用すべきだろう。リファレンス・マニュアルには、Fileクラスのstaticなメソッドでは、毎回ファイルに対するセキュリティのチェックが実行されるが、FileInfoクラスのインスタンス・メソッドでは必ずしもそうではないといったことも記述されている。
カテゴリ:クラス・ライブラリ 処理対象:ディレクトリ&ファイル
使用ライブラリ:Fileクラス(System.IO名前空間)
Copyright© Digital Advantage Corp. All Rights Reserved.