最初に; ベストプラクティスは、ユーザーのデスクトップフォルダを次のように取得することです。
string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
次に、次のようなものですべてのファイルを見つけることができます
string[] files = Directory.GetFiles(path, "*.txt", SearchOption.AllDirectories);
上記の行を使用すると、ログインしたユーザーのデスクトップフォルダーとすべてのサブフォルダーに.txt拡張子の付いたすべてのファイルが表示されることに注意してください。
次に、上記のコレクションを次のように列挙することで、ファイルをコピーまたは移動できます。
// For copying...
foreach (string s in files)
{
File.Copy(s, "C:\newFolder\newFilename.txt");
}
// ... Or for moving
foreach (string s in files)
{
File.Move(s, "C:\newFolder\newFilename.txt");
}
Copy()
(またはMove()
)操作にファイル名を含める必要があることに注意してください。したがって、少なくとも処理している拡張子のファイル名を判別する方法を見つける必要があり、上記の例のようにすべてのファイルに同じ名前を付ける必要はありません。
それを念頭に置いて、クラスDirectoryInfo
とFileInfo
クラスをチェックすることもできます。これらは同じように機能しますが、パス/ファイル名、拡張子などに関する情報をより簡単に取得できます。
詳細については、以下を確認してください。
http://msdn.microsoft.com/en-us/library/system.io.directory.aspx
http://msdn.microsoft.com/en-us/library/ms143316.aspx
http://msdn.microsoft.com/en-us/library/system.io.file.aspx