no-image

C#でたくさんのファイル移動を行う方法

C#でファイルの移動を行う方法

Cシャープでフォルダやファイルを扱うにはFileクラス及びDirectoryクラスのメソッドを使用します。これらのクラスのメソッドは、静的メソッドになっていて、インスタンス化しなくても使えるメソッドになっています。

FileクラスやDirectoryクラスのメソッドを使うためにはまず名前空間に以下の構文を記述します。

usingSystem.IO;

C#FileクラスのMoveメソッド

Cシャープでファイルを移動するにFileクラスのMoveメソッドを使いますが、それ以外にもメソッドはいろいろあります。下記あげたものは知っておくと良いメソッドです。

Directory.GetlogicalDrivers() 利用可能なドライブを取得
Directory.GetFiles(directory path) ディレクトリのファイルを取得
File.Exists() ファイルが存在するかどうか。
File.Move(“oldfile path”,“newfile path”) ファイルを移動する
Path.GetFileName(filepath) ファイルのパスを取得

動かしたいファイルを見つけるためにDirectory.GetFiles(directory path)を使います。Directory.GetFiles()メソッドはファイル一覧が格納されたオブジェクトを取得しますので、foreachを使って個々のファイル情報をみることができます。

var dirs = Directory.GetFiles(@”C:\”);
foreach(var d in dirs)[Console.WriteLine(d);]

しかしforeachのdはファイルの情報が格納されているので、そのままFile.Move()メソッドに使用することはできません。

そこで必要になってくるのがPath.GetFileName(file path)です。このメソッドはファイル名を返しますので下記のように記述します。

var dirs = Directory.GetFiles(@”C:\”);
foreach(var d in dirs){
varfilename = Path.GetFileNames(d);//ファイル名を取得できる。
File.Move($@“C:\sample\[filename]”, $@“C:\sample2\{filename}”);
}

filename変数にPath.GetFileName(file path)を格納します。そうすることでこれがFile.Move()メソッドで使用できるようになります。変数展開するには$””と記述しますが、逐語的文字列を使用しているので$@”{filename}”というように記述します。

目的のファイルは条件分岐などで選別します。この方法でたくさんのファイルを移動することができます。