悲劇は繰り返される。
C言語からの流用に失敗した*1ので、.NETだけで作ってやろうじゃないかと調べた。すると、スグに必要なサンプルコードが見つかったので少しの手直しで動いてしまった。
下が、デスクトップ上のファイルとフォルダを削除するために書いたメソッドです。
void FileTool::DeleteFoldersAndFiles(void) { String^ strCategoryFolder = Environment::GetFolderPath(Environment::SpecialFolder::DesktopDirectory); array<String^>^ aryFileNames = IO::Directory::GetFiles(strCategoryFolder); for each (String^ strFileName in aryFileNames) { IO::File::Delete(strFileName); } array<String^>^ aryFolderNames = System::IO::Directory::GetDirectories(strCategoryFolder);// for each (String^ strSubFolderName in aryFolderNames) { IO::Directory::Delete(strSubFolderName, true); } }
試しに動かしてみると、確かにファイル削除はしてくれる。んが、ごみ箱を経由してくれない。使っているメソッドが悪いんだと考えて探してみたけど、無い。VB向けにはMicrosoft.VisualBasic.FileIOがあるらしい。Microsoftの開発者は標準の.NET環境でプログラムを書いているのかと疑問に感じる。確かに良くできているけど、かゆいところに手が届かない。
*1:面倒になったとも言う