DOBON.NET DOBON.NETプログラミング掲示板過去ログ

フォルダーのコピー

  • 題名: フォルダーのコピー
  • 著者: かつ
  • 日時: 2003/11/19 11:07:19
  • ID: 1481
  • この記事の返信元:
    • (なし)
  • この記事への返信:
  • ツリーを表示
環境/言語:[Win2000,VB.NET]
分類:[.NET]

初めまして。
VB.NETを使い始めたばかりの初心者です。

質問なのですが、フォルダーのコピーをしたいのですが何か良い方法はありませんか?
VB6.0ではFileSystemObjectを使用しコピーを行っていましたが、
VB.NETではファイルのコピーしかサポートしていないようですね。

やはりコピーするフォルダーの下を全て(サブフォルダー、ファイル)を検索し、
1つずつコピーするしか方法はないのでしょうか?

どうぞ、宜しくお願い致します。
ほんとだ。
以前のヘルプにはコピーもできるみたいなことが書いてありましたが、
最新のヘルプではコメントが削除されているみたいですね。
MS英語サイトのライブラリでも「ディレクトリのコピー」のタイトルは
あるようですが、その先は続いてないようですし...。
とりあえずFSOを使用するか、File、Directoryを駆使し、自分でコピー
するか、あるいはSHFileOperation(API関数)を使用するしかないのでしょうか...。(^_^;)
ディレクトリをコピーするコードを書いてみました。よろしければ、参考にしてください。

'/ <summary>
'/ ディレクトリをコピーする
'/ </summary>
'/ <param name="sourceDirName">コピーするディレクトリ</param>
'/ <param name="destDirName">コピー先のディレクトリ</param>
Public Shared Sub CopyDirectory( _
ByVal sourceDirName As String, ByVal destDirName As String)
'コピー先のディレクトリがないときは作る
If Not Directory.Exists(destDirName) Then
Directory.CreateDirectory(destDirName)
'属性もコピー
File.SetAttributes(destDirName, File.GetAttributes(sourceDirName))
End If

'コピー先のディレクトリ名の末尾に"\"をつける
If destDirName.Chars((destDirName.Length - 1)) <> _
Path.DirectorySeparatorChar Then
destDirName = destDirName + Path.DirectorySeparatorChar
End If

'コピー元のディレクトリにあるファイルをコピー
Dim fs As String() = Directory.GetFiles(sourceDirName)
Dim f As String
For Each f In fs
File.Copy(f, destDirName + Path.GetFileName(f), True)
Next

'コピー元のディレクトリにあるディレクトリをコピー
Dim dirs As String() = Directory.GetDirectories(sourceDirName)
Dim dir As String
For Each dir In dirs
CopyDirectory(dir, destDirName + Path.GetFileName(dir))
Next
End Sub

> 以前のヘルプにはコピーもできるみたいなことが書いてありましたが、
> 最新のヘルプではコメントが削除されているみたいですね。

私は知りませんでしたが、そうなのでしょうか?とすると、何かわけがあって消されたのでしょうか。
お返事遅れて申し訳ありません。
ご回答頂いたお二方、ありがとうございました。

管理人様のコードを参考に、フォルダー下のサブフォルダー、その下のファイルと
1つずつ検索しコピーするようにしました。

.NETへバージョンアップし開発が楽になるのは歓迎ですが、今回の様な機能削除?は
勘弁して頂きたいものです・・・。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板