// DirectoryGetFilesMostDeep.cpp : メイン プロジェクト ファイルです。 #include "stdafx.h" using namespace System; using namespace System::Collections::Specialized; using namespace System::IO; array^ GetFilesMostDeep(String^ stRootPath, String^ stPattern) { StringCollection^ hStringCollection = gcnew StringCollection; // このディレクトリ内のすべてのファイルを検索する for each (String^ stFilePath in Directory::GetFiles(stRootPath, stPattern)) { hStringCollection->Add(stFilePath); } // このディレクトリ内のすべてのサブディレクトリを検索する (再帰) for each (String^ stDirPath in Directory::GetDirectories(stRootPath)) { array^ stFilePathes = GetFilesMostDeep(stDirPath, stPattern); // 条件に合致したファイルがあった場合は、ArrayList に加える if (!stFilePathes->Equals("")) { hStringCollection->AddRange(stFilePathes); } } // StringCollection を 1 次元の String 配列にして返す array^ stReturns = gcnew array(hStringCollection->Count); hStringCollection->CopyTo(stReturns, 0); return stReturns; } int main(array ^args) { // ファイル名に「e」を含み、拡張子が「.txt」のファイルを最下層まで検索し取得する array^ stFilePathes = GetFilesMostDeep("C:\\MyFolder\\Homepage\\public_html\\Cprpr\\GetFilesMostDeepDirectory", "*e*.txt"); String^ stPrompt = String::Empty; // 取得したファイル名を列挙する for each (String^ stFilePath in stFilePathes) { stPrompt += stFilePath + Environment::NewLine; } // 取得したすべてのファイルパスを表示する if (stPrompt != String::Empty) { Console::WriteLine(stPrompt); } return 0; }