"コンピュータに,1以下の2と3を実行するためのメモリを前記コンピュータ上に確保する手段と,2カレントディレクトリ内のファイルおよびディレクトリを検出する手段と,3検出したファイルおよびディレクトリの情報を書き出す手段と,4前記2および3に記載の手段により,前記カレントディレクトリ内のすべてのファイルおよびディレクトリの検出および書き出しが完了すると,前記カレントディレクトリがチェック済みである旨を示すフラグを設定するとともに,前記1で確保したメモリを解放する手段と,前記書き出した情報にディレクトリの情報が存在し,かつ前記フラグが設定されていないディレクトリをカレントディレクトリとして,前記1から4を実行させる手段,として機能させるプログラム。1以下の2と3を実行するためのメモリを前記コンピュータ上に確保する手段と,2カレントディレクトリ内のファイルおよびディレクトリを検出する手段と,3検出したファイルおよびディレクトリの情報を書き出す手段と,4前記2および3に記載の手段により,前記カレントディレクトリ内のすべてのファイルおよびディレクトリの検出および書き出しが完了すると,前記カレントディレクトリがチェック済みである旨を示すフラグを設定するとともに,前記1で確保したメモリを解放する手段と,前記書き出した情報にディレクトリの情報が存在し,かつ前記フラグが設定されていないディレクトリをカレントディレクトリとして,前記1から4を実行させる手段と,を備えるディレクトリ走査装置。コンピュータが使用するメモリ消費量を低減する方法であって,1以下の2と3を実行するためのメモリを前記コンピュータ上に確保するステップと,2カレントディレクトリ内のファイルおよびディレクトリを検出するステップと,3検出したファイルおよびディレクトリの情報を書き出すステップと,4前記2および3のステップにより,前記カレントディレクトリ内のすべてのファイルおよびディレクトリの検出および書き出しが完了すると,前記カレントディレクトリがチェック済みである旨を示すフラグを設定するとともに,前記1で確保したメモリを解放するステップと,前記書き出した情報にディレクトリの情報が存在し,かつ前記フラグが設定されていないディレクトリをカレントディレクトリとして,前記1から4を実行させるステップと,を含む方法。上述した課題に鑑み,本願発明では,ディレクトリ階層の深さに関係なく,一定のメモリ消費量にてディレクトリを走査することができるプログラムを提供することを目的とする。本願発明にかかる第1の形態は,コンピュータに,1以下の2と3を実行するためのメモリをコンピュータ上に確保する手段と,2カレントディレクトリ内のファイルおよびディレクトリを検出する手段と,3検出したファイルおよびディレクトリの情報を書き出す手段と,42および3に記載の手段により,カレントディレクトリ内のすべてのファイルおよびディレクトリの検出および書き出しが完了すると,カレントディレクトリがチェック済みである旨を示すフラグを設定するとともに,1で確保したメモリを解放する手段と,書き出した情報にディレクトリの情報が存在し,かつフラグが設定されていないディレクトリをカレントディレクトリとして,1から4を実行させる手段,として機能させるプログラムである。本願発明にかかる第2の形態は,1以下の2と3を実行するためのメモリをコンピュータ上に確保する手段と,2カレントディレクトリ内のファイルおよびディレクトリを検出する手段と,3検出したファイルおよびディレクトリの情報を書き出す手段と,42および3に記載の手段により,カレントディレクトリ内のすべてのファイルおよびディレクトリの検出および書き出しが完了すると,カレントディレクトリがチェック済みである旨を示すフラグを設定するとともに,1で確保したメモリを解放する手段と,書き出した情報にディレクトリの情報が存在し,かつフラグが設定されていないディレクトリをカレントディレクトリとして,1から4を実行させる手段と,を備えるディレクトリ走査装置である。本願発明にかかる第3の形態は,コンピュータが使用するメモリ消費量を低減する方法であって,1以下の2と3を実行するためのメモリをコンピュータ上に確保するステップと,2カレントディレクトリ内のファイルおよびディレクトリを検出するステップと,3検出したファイルおよびディレクトリの情報を書き出すステップと,42および3のステップにより,カレントディレクトリ内のすべてのファイルおよびディレクトリの検出および書き出しが完了すると,カレントディレクトリがチェック済みである旨を示すフラグを設定するとともに,1で確保したメモリを解放するステップと,書き出した情報にディレクトリの情報が存在し,かつフラグが設定されていないディレクトリをカレントディレクトリとして,1から4を実行させるステップと,を含む方法である。本願発明によれば,ディレクトリ走査に関して,プログラムを再帰的に呼び出すことがないので,ディレクトリ階層の深さに関わらず,メモリ消費量を一定に保ちつつ走査を行うことができる。以下では図面を参照し本願発明に係る実施例を説明する。[実施例][本願発明のプログラム構造]図6は本願発明におけるディレクトリ走査のプログラム構造である。なお,対象となるディレクトリ構造は従来技術の説明で用いた図1の通りとする。従来技術である再帰呼び出し処理との大きな違いは,走査処理を進めても,スタックサイズが一定であることである。リストアップしては書き出すという,一見同様の処理を行っているようにも見えるが,このような異なる結果となる要因について以下で説明する。なお,再帰呼び出し処理も本願発明の処理も,ディレクトリ走査という動作の結果得られる成果ディレクトリおよびファイル情報については全く同じであり,その手順が異なるだけである。図7は,図1のディレクトリ構造を本願発明の処理にて走査した場合のプログラムの実行回数を示したものである。大きな特徴は,ディレクトリの走査を進めても,プログラムが再帰的に呼び出されておらず,ディレクトリを走査するごとにいったんプログラムを完了スタック解放していることである。たとえばディレクトリD1の中を走査する場合,ディレクトリD2とファイルF1を検出し,書き出した時点でリストアップを完了し,書き出した情報の中にディレクトリこの場合ディレクトリD2があれば,そのディレクトリについて走査を行う。最終的に,ディレクトリがなくなりファイルだけになれば走査は完了となる。図では,ファイルF2とF3を書き出した時点で完了となる。図3に示す再帰呼び出し処理では,ディレクトリが検出されるたびに,再帰的にリストアップを繰り返す処理となっているため,本願発明のようにリストアッププログラムをいったん完了することなく,プログラムが再帰的に呼び出されている。既に説明したように,プログラムが再帰的に呼び出されるということは,その間,スタックサイズは累積的に増加していることを意味している。[本願発明による動作フロー]図8は,本願発明によるディレクトリ走査プログラムの動作フローである。ステップS801にてファイルをオープンしプログラムを開始する。ステップS802にてリストアッププログラムを呼び出す。この時点でスタックが確保される。ステップS811にて,カレントディレクトリ内の要素検出が完了したかどうかを判断する。この結果,完了していればステップS813に進み,カレントディレクトリがチェック済みである旨を示すフラグを設定し,ステップS814にてリストアッププログラムは完了する。この時点で,確保されたスタックは解放される。一方,判断の結果,要素検出が完了していなければ,ステップS812に進み要素検出を繰り返す。ステップS803にて,書き出したファイルにフラグの設定されていないディレクトリがあるかどうかを判断する。判断の結果,あればS802にて再度リストアップを行い,なければS804にてファイルをクローズしてプログラムを終了する。本願発明は,このようにしてディレクトリの階層ごとにリストアッププログラムを完了,すなわちスタックを解放するため,ディレクトリ階層の深さに関わらず,スタックサイズは常に一定を保ちつつ,ディレクトリ走査を行うことができる。スタックサイズを常に一定に保つことができる理由は,ステップS702のリストアップ処理が再帰的に呼び出されることがないためであり,常に1回分の処理に必要なスタックしか消費しないからである。図9は,ディレクトリ走査を行う場合の,再帰呼び出し処理と本願発明とのスタックサイズを比較したグラフである。再帰呼び出し処理は,ディレクトリ階層が多くなるごとに,累積的にスタックサイズが大きくなるが,本願発明は常に一定となることがわかる。[まとめ]本願発明によれば,ディレクトリ走査に関して,プログラムを再帰的に呼び出すことがないので,ディレクトリ階層の深さに関わらず,メモリ消費量を一定に保ちつつ走査を行うことができる。"