[VB.NET] ディレクトリのコピー

2011年10月13日

 ディレクトリを移動する際に使用できるメソッドとして、

System.IO.Directory.Move(formDir,toDir)

がありますが、これは同一ドライブでの移動のみに対応していて、ディレクトリのコピーや他のドライブへの移動はできません。

 ところが、ディレクトリのコピーを行う

System.IO.Directory.Copy(formDir,toDir)

のようなメソッドは用意されていません。なんでやねん…_| ̄|○

 なので web ページを探ると、「Copyメソッドはありません」「ないので諦めて作りましょう(ファイルを一つ一つ再帰的にコピー)」って書かれているところも多いですが、VB2005以降だと、

My.Computer.FileSystem.CopyDirectory(formDir,toDir)

が用意されていてディレクトリのコピーが可能です。

 でも my は VB2005 以降でしか使えません。しかし my はショートカットのはずなので、元のクラスがあるはずです。とおもって探したら、以下にありました。

Microsoft.VisualBasic.FileIO.FileSystem.CopyDirectory(formDir,toDir)

 たぶんこれで、VB2003以前でも使用できると思います。
 (試していません。 私はもう .net 1.1は使うことはない予定…)

 しかし、my でなくても使用できるということは、VBでなくても、C#でも使用できるのでは?
 参照設定で、「Microsoft.VisualBasic」を追加する必要がありますが、以下の記述で使用できました。

Microsoft.VisualBasic.FileIO.FileSystem.CopyDirectory(formDir,toDir);

 C#でVBのライブラリなんて…という抵抗感もありますが、属性もコピーしてくれるので楽ですよ。






カテゴリー: C#, Program, VB.NET

Follow comments via the RSS Feed | Leave a comment | Trackback URL

コメントを投稿する

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


«   »
 
Powered by Wordpress and MySQL. Theme by Shlomi Noach, openark.org