.net Directory クラスには、ディレクトリを移動、削除するメソッドがあります。ただし、ディレクトリとそのコンテンツをコピーする方法はありません。この方法のように、ループを使用して各ファイルとサブディレクトリをコピーする必要があります。
Copy メソッドを持たない合理的/理由を知りたいです。
.net Directory クラスには、ディレクトリを移動、削除するメソッドがあります。ただし、ディレクトリとそのコンテンツをコピーする方法はありません。この方法のように、ループを使用して各ファイルとサブディレクトリをコピーする必要があります。
Copy メソッドを持たない合理的/理由を知りたいです。
これは、Windows APIMoveFile
および関連する関数を使用してディレクトリを移動することもできますがCopyFile
、関連する関数をディレクトリで使用することはできないためです。
より根本的な理由は、ファイルまたはディレクトリの移動は単に名前を変更するだけだからです。実際には、ディスク上のファイル (またはファイル) のデータを物理的に移動する必要はありません。ディレクトリの名前を変更すると、ディレクトリに含まれるファイルは、いわば「参照によって」新しいパスを自動的に取得します。各ファイルのエントリを操作する必要はありません。
.NETにディレクトリ全体をコピーする方法がないわけではありません ( VB.NETにはディレクトリが存在するため) 。C#にはディレクトリ全体をコピーする方法がないということです。
この機能が他の .NET 言語でサポートされていることを考えると、C# にこの機能がないことに技術的または哲学的な理由があるとは考えにくく、「既定では機能が存在しない」という帰無仮説に頼る ことができます(多くの場合、 Eric Lippert によって説明されています)。