(57)【要約】【課題】  クラスタチェーンに関するソフトウェア処理（ファームウェア）の高速化を図ること。【解決手段】  サブディレクトリ識別項目のファイルサイズフィールドに、先頭クラスタの直後に続くクラスタのクラスタ番号を示すフィールド値（情報）を記録するようにした。そのため、所定のサブディレクトリ内のファイルのディレクトリエントリやディレクトリのディレクトリエントリが複数のクラスタにまたがって記録されているときに（クラスタチェーンが生成されているときに）、前記サブディレクトリ内から所望のファイルを検索する場合には、前記サブディレクトリを示すサブディレクトリ識別項目のファイルサイズフィールドに記録されている情報を解析させることで、先頭クラスタに続くクラスタのクラスタ番号を取得することができる。そのため、クラスタチェーンの解析の高速化を図ることができ、その結果、前記所望ファイルの検索処理の改善を図ることができる。【選択図】  図２
2006127444.tif 000002
【特許請求の範囲】
【請求項１】
所定のファイル及びディレクトリのディレクトリエントリを所定の記憶装置のクラスタに記録することで、ファイル及びディレクトリを管理するファイル管理プログラムであって、所定のサブディレクトリ内のファイル及びディレクトリのディレクトリエントリが複数のクラスタ領域にまたがって記録されると、前記サブディレクトリを示すサブディレクトリ指示項目の空きフィールド、前記サブディレクトリを示すサブディレクトリ識別項目の空きフィールド、及び前記サブディレクトリの親ディレクトリを示す親ディレクトリ指示項目の空きフィールドの少なくとも１つに、前記サブディレクトリ識別項目の先頭クラスタ番号フィールドに示されるクラスタ番号に継続するクラスタ番号を記録する記録機能をコンピュータに実行させることを特徴とするファイル管理プログラム。
【請求項２】
前記記録機能は、直後に続くクラスタ番号を記録することを特徴とする請求項１に記載のファイル管理プログラム。
【請求項３】
前記記録機能は、直後に続くクラスタ番号に引き続いて継続する複数のクラスタ番号を記録することを特徴とする請求項１に記載のファイル管理プログラム。
【請求項４】
サブディレクトリ指示項目の空きフィールド、サブディレクトリ識別項目の空きフィールド、及び親ディレクトリ指示項目の空きフィールドの少なくとも２つに、同じクラスタ番号を記録することを特徴とする請求項３に記載のファイル管理プログラム。
【請求項５】
サブディレクトリ指示項目の空きフィールド、サブディレクトリ識別項目の空きフィールド、及び親ディレクトリ指示項目空きフィールドのうち、少なくとも２つのフィールドの領域全体に対して記録対象のクラスタ番号を１つ記録することを特徴とする請求項３に記載のファイル管理プログラム。
【請求項６】
前記空きフィールドは、ファイルサイズフィールド及び予約フィールドの少なくとも一方であることを特徴とする請求項１から５のいずれか１項に記載のファイル管理プログラム。
【請求項７】
前記記録機能は、前記サブディレクトリを示すサブディレクトリ指示項目の属性フィールド、前記サブディレクトリを示すサブディレクトリ識別項目の属性フィールド、及び前記サブディレクトリの親ディレクトリを示す親ディレクトリ指示項目の属性フィールドの少なくとも１つに、前記継続するクラスタ番号を示す情報が記録されていることを示す情報を記録することを特徴とする請求項１から６のいずれか１項に記載のファイル管理プログラム。
【請求項８】
所定のファイル及びディレクトリのディレクトリエントリを所定の記憶装置のクラスタに記録することで、ファイル及びディレクトリを管理するファイル管理プログラムであって、所定のサブディレクトリを示すサブディレクトリ指示項目の空きフィールド、前記サブディレクトリを示すサブディレクトリ識別項目の空きフィールド、及び前記サブディレクトリの親ディレクトリを示す親ディレクトリ指示項目の空きフィールドの少なくとも１つに、前記サブディレクトリ識別項目の先頭クラスタ番号フィールドに示されるクラスタ番号に継続するクラスタ番号が記録されている場合には、そのクラスタ番号を記録している空きフィールドを解析することで、前記サブディレクトリ識別項目の先頭クラスタ番号フィールドに示されるクラスタ番号に継続するクラスタ番号を特定する特定機能をコンピュータに実行させることを特徴とするファイル管理プログラム。
【請求項９】
所定のファイル及びディレクトリに対応するディレクトリエントリを所定の記憶装置のクラスタに記録することで、ファイル及びディレクトリを管理するファイル管理プログラムで用いられるデータ構造であって、所定のサブディレクトリを示すサブディレクトリ指示項目の空きフィールド、前記サブディレクトリを示すサブディレクトリ識別項目の空きフィールド、及び前記サブディレクトリの親ディレクトリを示す親ディレクトリ指示項目の空きフィールドの少なくとも１つに、前記サブディレクトリ識別項目の先頭クラスタ番号フィールドに示されるクラスタ番号に継続するクラスタ番号を記録することを特徴とするデータ構造。
【請求項１０】
所定のファイル及びディレクトリのディレクトリエントリを所定の記憶装置のクラスタに記録することで、ファイル及びディレクトリを管理するファイル管理装置であって、所定のサブディレクトリ内のファイル及びディレクトリのディレクトリエントリが複数のクラスタ領域にまたがって記録されると、前記サブディレクトリを示すサブディレクトリ指示項目の空きフィールド、前記サブディレクトリを示すサブディレクトリ識別項目の空きフィールド、及び前記サブディレクトリの親ディレクトリを示す親ディレクトリ指示項目の空きフィールドの少なくとも１つに、前記サブディレクトリ識別項目の先頭クラスタ番号フィールドに示されるクラスタ番号に継続するクラスタ番号を記録する記録手段を備えたことを特徴とするファイル管理装置。
【請求項１１】
所定のファイル及びディレクトリのディレクトリエントリを所定の記憶装置のクラスタに記録することで、ファイル及びディレクトリを管理するファイル管理装置であって、所定のサブディレクトリを示すサブディレクトリ指示項目の空きフィールド、前記サブディレクトリを示すサブディレクトリ識別項目の空きフィールド、及び前記サブディレクトリの親ディレクトリを示す親ディレクトリ指示項目の空きフィールドの少なくとも１つに、前記サブディレクトリ識別項目の先頭クラスタ番号フィールドに示されるクラスタ番号に継続するクラスタ番号が記録されている場合には、そのクラスタ番号を記録している空きフィールドを解析することで、前記サブディレクトリ識別項目の先頭クラスタ番号フィールドに示されるクラスタ番号に継続するクラスタ番号を特定する特定手段を備えたことを特徴とするファイル管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファイルやディレクトリのディレクトリエントリを記録することで、ファイルやディレクトリを管理するファイル管理プログラム、そのファイル管理プログラムに好適なデータ構造及びファイル管理装置に関する。
【背景技術】
【０００２】
従来、この種のファイル管理プログラムとしては、例えば、マイクロソフト社のオペレーティングシステム(Windows(登録商標)やMS-DOS(登録商標)) に搭載されたファイルシステム、つまり、ＦＡＴ(File Allocation Table)ファイルシステムがある（例えば特許文献１参照）。この特許文献１に記載されているファイル管理プログラムにあっては、新しいファイルやディレクトリが生成されるたびに、その生成されたファイル等のディレクトリエントリを記録することで、ファイル等を管理するようになっている。
【０００３】
また、この特許文献１に記載されているようなファイル管理プログラムにあっては、一般に、それらファイル等のディレクトリエントリの記録に使用される領域の合計サイズが１つのクラスタ領域のサイズより小さい場合には、ディレクトリエントリを１つのクラスタ領域に記録する。また、その合計サイズが、１つのクラスタのサイズより大きい場合には、現在のクラスタ番号に引き続く（リンクする）クラスタ領域を新しく確保し、その新しく確保されたクラスタ領域に継続してディレクトリエントリを記録する。なお、クラスタ領域が新しく確保された場合には、その新しく確保されたクラスタ領域のクラスタ番号のリンク状態を、クラスタチェーンとして、ＦＡＴに記録するようになっている。
【０００４】
そして、所望のファイル等を検索する場合には、まず、先頭クラスタ領域を読み出し、その読み出された先頭クラスタ領域内のディレクトリエントリに対して検索処理を開始する。その後、先頭クラスタ領域内の全てのディレクトリエントリに対して検索処理が行われると、その検索処理を中断させ、ＦＡＴを参照してクラスタチェーンを解析し、先頭クラスタ番号に引き続くクラスタ番号を特定する。そして、その特定されたクラスタ領域を読み出し、そのクラスタ領域内のディレクトリエントリに対して検索処理を再開する。
【特許文献１】特開平６−３０９２０７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記従来のファイル管理プログラムにあっては、クラスタチェーンがあるときに、ファイル等を検索する場合には、検索処理の途中でＦＡＴによるクラスタチェーンの解析処理を行うようになっているため、例えば、低消費電力化や小型化といった要求のために、ハードウエア性能に厳しい制約がある組み込み機器に適用した場合、多くの時間が掛かってしまい、その結果、検索に要する時間が増大してしまう恐れがあった。
【０００６】
本発明は、上記従来技術の未解決の問題点を解決することを目的とするものであって、クラスタチェーンに関するソフトウェア（ファームウェア）処理を高速化（改善）することが可能なファイル管理プログラム、そのファイル管理プログラムに好適なデータ構造及びファイル管理装置を提供することを課題とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明のファイル管理プログラムは、所定のファイル及びディレクトリのディレクトリエントリを所定の記憶装置のクラスタに記録することで、ファイル及びディレクトリを管理するファイル管理プログラムであって、所定のサブディレクトリ内のファイル及びディレクトリのディレクトリエントリが複数のクラスタ領域にまたがって記録されると、前記サブディレクトリを示すサブディレクトリ指示項目の空きフィールド、前記サブディレクトリを示すサブディレクトリ識別項目の空きフィールド、及び前記サブディレクトリの親ディレクトリを示す親ディレクトリ指示項目の空きフィールドの少なくとも１つに、前記サブディレクトリ識別項目の先頭クラスタ番号フィールドに示されるクラスタ番号に継続する（リンクする、引き続く）クラスタ番号を記録する記録機能をコンピュータに実行させることを特徴とする。なお、サブディレクトリ指示項目は、この項目がある階層レベルより１つ下層のサブディレクトリを示すためのディレクトリエントリである。また、サブディレクトリ識別項目は、この項目がある階層レベルのサブディレクトリ、即ち、自分自身のディレクトリを示すためのディレクトリエントリである。さらに、親ディレクトリ指示項目は、この項目がある階層レベルより１つ上層の親ディレクトリを示すためのディレクトリエントリである。
【０００８】
また、前記記録機能は、直後に続くクラスタ番号を記録するようにしてもよい。
さらに、前記記録機能は、直後に続くクラスタ番号に引き続いて継続する複数のクラスタ番号を記録するようにしてもよい。
さらに、前記空きフィールドは、ファイルサイズフィールド及び予約フィールドの少なくとも一方であってもよい。
【０００９】
また、本発明のファイル管理プログラムは、所定のファイル及びディレクトリのディレクトリエントリを所定の記憶装置のクラスタに記録することで、ファイル及びディレクトリを管理するファイル管理プログラムであって、所定のサブディレクトリを示すサブディレクトリ指示項目の空きフィールド、前記サブディレクトリを示すサブディレクトリ識別項目の空きフィールド、及び前記サブディレクトリの親ディレクトリを示す親ディレクトリ指示項目の空きフィールドの少なくとも１つに、前記サブディレクトリ識別項目の先頭クラスタ番号フィールドに示されるクラスタ番号に継続する（リンクする、引き続く）クラスタ番号が記録されている場合には、そのクラスタ番号を記録している空きフィールドを解析することで、前記サブディレクトリ識別項目の先頭クラスタ番号フィールドに示されるクラスタ番号に継続（リンク）するクラスタ番号を特定する特定機能をコンピュータに実行させることを特徴とする。
【００１０】
さらに、本発明のデータ構造は、所定のファイル及びディレクトリに対応するディレクトリエントリを所定の記憶装置のクラスタに記録することで、ファイル及びディレクトリを管理するファイル管理プログラムで用いられるデータ構造であって、所定のサブディレクトリを示すサブディレクトリ指示項目の空きフィールド、前記サブディレクトリを示すサブディレクトリ識別項目の空きフィールド、及び前記サブディレクトリの親ディレクトリを示す親ディレクトリ指示項目の空きフィールドの少なくとも１つに、前記サブディレクトリ識別項目の先頭クラスタ番号フィールドに示されるクラスタ番号に継続（リンク）するクラスタ番号を記録することを特徴とする。
【００１１】
また、本発明のファイル管理装置にあっては、所定のファイル及びディレクトリのディレクトリエントリを所定の記憶装置のクラスタに記録することで、ファイル及びディレクトリを管理するファイル管理装置であって、所定のサブディレクトリ内のファイル及びディレクトリのディレクトリエントリが複数のクラスタ領域にまたがって記録されると、前記サブディレクトリを示すサブディレクトリ指示項目の空きフィールド、前記サブディレクトリを示すサブディレクトリ識別項目の空きフィールド、及び前記サブディレクトリの親ディレクトリを示す親ディレクトリ指示項目の空きフィールドの少なくとも１つに、前記サブディレクトリ識別項目の先頭クラスタ番号フィールドに示されるクラスタ番号に継続（リンク）するクラスタ番号を記録する記録手段を備えたことを特徴とする。
【００１２】
さらに、本発明のファイル管理装置にあっては、所定のファイル及びディレクトリのディレクトリエントリを所定の記憶装置のクラスタに記録することで、ファイル及びディレクトリを管理するファイル管理装置であって、所定のサブディレクトリを示すサブディレクトリ指示項目の空きフィールド、前記サブディレクトリを示すサブディレクトリ識別項目の空きフィールド、及び前記サブディレクトリの親ディレクトリを示す親ディレクトリ指示項目の空きフィールドの少なくとも１つに、前記サブディレクトリ識別項目の先頭クラスタ番号フィールドに示されるクラスタ番号に継続（リンク）するクラスタ番号が記録されている場合には、そのクラスタ番号を記録している空きフィールドを解析することで、前記サブディレクトリ識別項目の先頭クラスタ番号フィールドに示されるクラスタ番号に継続（リンク）するクラスタ番号を特定する特定手段を備えたことを特徴とする。
【００１３】
このような構成によれば、例えば、所定のディレクトリ内のファイルやサブディレクトリのディレクトリエントリが複数のクラスタ領域にまたがって記録されているとき（クラスタチェーンがあるとき）に、そのディレクトリ内のファイル等から所望のファイルを検索する場合、つまり、それらファイル等のディレクトリエントリに対して検索処理を行う場合には、前記ディレクトリを示すサブディレクトリ指示項目の空きフィールド、前記サブディレクトリを示すサブディレクトリ識別項目の空きフィールド、及び前記サブディレクトリの親ディレクトリを示す親ディレクトリ指示項目の空きフィールドの少なくとも１つに記録されているフィールド値（情報）を解析させることで、後続するクラスタのクラスタ番号を取得させることができる。そのため、例えば、ＦＡＴを参照してクラスタチェーンを解析させることで後続するクラスタを特定させる方法に比べ、クラスタチェーンに関するソフトウェア（ファームウェア）処理の高速化（改善）を図ることが可能である。
【００１４】
また、本発明のファイル管理プログラムにあっては、前記記録機能は、前記サブディレクトリを示すサブディレクトリ指示項目の属性フィールド、前記サブディレクトリを示すサブディレクトリ識別項目の属性フィールド、及び前記サブディレクトリの親ディレクトリを示す親ディレクトリ指示項目の属性フィールドの少なくとも１つに、前記継続するクラスタ番号を示す情報が記録されていることを示す情報を記録するものであってもよい。
【００１５】
このような構成によれば、例えば、継続するクラスタ番号を示す情報が記録されていることを示す情報がある場合には、その記録されている情報を取得するようにし、また、前記情報が記録されていない場合には、従来の方法により、ＦＡＴを参照してクラスタチェーンの解析処理を行うようにするというように、実行させる処理の選択が可能である。
また、サブディレクトリ指示項目の空きフィールド、サブディレクトリ識別項目の空きフィールド、及び親ディレクトリ指示項目の空きフィールドの少なくとも２つに、同じクラスタ番号を記録するようにしてもよい。
【００１６】
このような構成によれば、例えば、２つの空きフィールドに同じクラスタ番号を記録することで、一方の空きフィールドに記録されているクラスタ番号を読み出せなくなった場合に、他方の空きフィールドに記録されているクラスタ番号を読み出すことができる。即ち、クラスタ番号のデータを二重化することができ、安全性を向上することができる。
さらに、サブディレクトリ指示項目の空きフィールド、サブディレクトリ識別項目の空きフィールド、及び親ディレクトリ指示項目空きフィールドのうち、少なくとも２つのフィールドの領域全体に対して記録対象のクラスタ番号を１つ記録するようにしてもよい。
【００１７】
このような構成によれば、例えば、一方の空きフィールドの記憶領域にクラスタ番号を記憶できる領域がなくなった場合に、他方の空きフィールドの記憶領域にクラスタ番号を記録することができる。即ち、複数の空きフィールドに同じデータを記録する方法に比べ、より多くのクラスタ番号を記録することができ、効率性を向上することができる。
【発明を実施するための最良の形態】
【００１８】
以下、本発明のファイル管理プログラムの実施形態として、画像データを生成可能なＣＣＤカメラ等の撮像ユニットを備える携帯端末に適用した例を図面に基づいて説明する。
即ち、この携帯端末１にあっては、撮像ユニットで画像データが生成されると、指定されたサブディレクトリを示すサブディレクトリエントリ指示項目が示すクラスタ（先頭クラスタ）内に、前記生成された画像データのファイルのファイル名のディレクトリエントリを記録できるだけの領域が残っているか否かを判定する。残っていない場合には、前記先頭クラスタの直後に続く新しいクラスタを確保し、その新しく確保されたクラスタのクラスタ番号を示すフィールド値（情報）と、その情報が記録されていることを示す情報とをサブディレクトリ識別項目に記録し、また、ファイル名のディレクトリエントリを前記新しく確保されたクラスタに記録する。そして、この携帯端末１にあっては、所望のファイルを検索するときに、ＦＡＴを解析することなく、検索対象であるファイルが記録されているサブディレクトリを示すサブディレクトリ識別項目を解析することで、前記所望のファイルを効率的に検索することができるようになっている。
【００１９】
＜携帯端末の構成＞
図１は、本実施形態の携帯端末の内部構成を示すブロック図である。この図１に示すように、携帯端末１は、撮像ユニット２、文字入力ユニット３、メモリーカードユニット４、表示ユニット５、Ｉ／Ｆ（I nterFace）６、ＣＰＵ（Central Processing Unit）７、ＲＡＭ（Random Access Memory）８及びＲＯＭ(Read Only Memory)９を含んで構成される。そして、携帯端末１は、撮像ユニット２、文字入力ユニット３、メモリーカードユニット４及び表示ユニット５を除く各部が、バス１０で互いに接続される。
【００２０】
撮像ユニット２は、背面側の平面視上部に配され、ＣＣＤカメラ（不図示）を含んで構成される。そして、撮像ユニット２は、所定の操作がされると、被写体の画像データをＣＣＤカメラ（不図示）で生成し、その画像データをＩ／Ｆ６経由でＣＰＵ７に出力する。
また、文字入力ユニット３は、前面側の平面視下部に配され、任意の文字列を入力可能なキーボード（不図示）を含んで構成される。そして、文字入力ユニット３は、そのキーボード（不図示）から入力される文字列の情報をＩ／Ｆ６経由でＣＰＵ７に出力する。
【００２１】
さらに、メモリーカードユニット４は、平面視左端部に配され、電力供給を停止してもデータを保持可能な不揮発性のメモリーカード（不図示）を着脱可能に構成される。そして、メモリーカードユニット４は、ＣＰＵ７からファイル格納指令（後述）が出力されると、ＣＰＵ７で生成されたファイル（後述）をメモリーカード（不図示）に記録する。
また、メモリーカードユニット４は、ＣＰＵ７からディレクトリエントリ記録指令（後述）が出力されると、後述するようにＣＰＵ７で生成されるフィールド値をサブディレクトリ識別項目の属性フィールドやファイルサイズフィールドに記録し、また、ＣＰＵ４で生成されるファイル名のディレクトリエントリをメモリーカード（不図示）に記録する。
【００２２】
さらに、メモリーカードユニット４は、ＣＰＵ７からＩ／Ｆ６経由でディレクトリエントリ読出指令（後述）が出力されると、その出力されたディレクトリエントリ読出指令（後述）で指定されるファイルのファイル名のディレクトリエントリを、メモリーカード（不図示）から読み出してＩ／Ｆ６経由でＣＰＵ７に出力する。また、メモリーカードユニット４は、ＣＰＵ７からＩ／Ｆ６経由でファイル読出指令（後述）が出力されると、前記ディレクトリエントリ読出指令（後述）によって読み出されたディレクトリエントリに対応するファイルをメモリーカード（不図示）から読み出す。そして、メモリーカードユニット４は、その読み出されたファイルをＩ／Ｆ６経由で表示ユニット５に出力する。
【００２３】
さらに、表示ユニット５は、前面側の平面視中央部に配され、任意の画像を表示可能な表示装置（不図示）を含んで構成される。そして、表示ユニット５は、メモリーカードユニット４からＩ／Ｆ６経由でファイルが出力されると、その出力されたファイルに含まれるデータ（例えば、画像データや文書データ等）を表示装置（不図示）に表示させる。
また、Ｉ／Ｆ６は、携帯端末１が備える各ユニット２〜５間や、各ユニット２〜５とＣＰＵ７との間で授受されるデータを受信側２〜５、７が読込可能な形式に変換する。
【００２４】
さらに、ＣＰＵ７は、ＲＯＭ９に記録されている基本制御プログラム(OS:Operating System)や、アプリケーションプログラム等の各種プログラムを読み出し、それら読み出された各種プログラムを実行して、携帯端末１が備える各部２〜９を制御する。
また、ＣＰＵ７は、撮像ユニット２から画像データが出力されると、その出力された画像データのファイルを生成する。また、ＣＰＵ７は、その生成されたファイル（以下、「新生成ファイル」とも呼ぶ。）を記録するサブディレクトリのファイルパス、及び新生成ファイルのファイル名として文字入力ユニット３から文字列の情報が入力されると、その新生成ファイルをメモリーカード（不図示）に記録させる指令（以下、「ファイル格納指令」とも呼ぶ。）をＩ／Ｆ６経由でメモリーカードユニット４に出力し、また同時に、ディレクトリエントリ生成処理（後述）を実行する。そして、ＣＰＵ７は、ディレクトリエントリ生成処理（後述）が実行されると、ファイル名のディレクトリエントリを記録できるだけの領域が、前記サブディレクトリを示すサブディレクトリ指示項目が示すクラスタに残っているか否かを判定する。前記領域が残っていない場合には、前記ディレクトリエントリを記録可能な空きクラスタのクラスタ番号を示すフィールド値（情報）をサブディレクトリ識別項目のファイルサイズフィールドに記録させ、また、その情報が記録されたことを示す情報をサブディレクトリ識別項目の属性フィールドに記録させ、さらに、前記ファイル名のディレクトリエントリを記録させるディレクトリエントリ記録指令（後述）をＩ／Ｆ６経由でメモリーカードユニット４に出力してから、この演算処理を終了する。
【００２５】
具体的には、サブディレクトリ識別項目は、ＦＡＴファイルシステムの規格に従って、図２に示すように、名前フィールド、拡張子フィールド、属性フィールド（空きフィールド）、予約フィールド、更新時刻フィールド、更新日付フィールド、先頭クラスタフィールド、ファイルサイズフィールド（空きフィールド）で構成される。そして、名前フィールド、拡張子フィールド、予約フィールド、更新時刻フィールド、更新日付フィールド及び先頭クラスタフィールドには、ＦＡＴファイルシステムの規格に従って設定する。
【００２６】
また、ファイルサイズフィールドには、サブディレクトリ識別項目の先頭クラスタ番号フィールドに記録されている情報が示すクラスタの直後に続くクラスタのクラスタ番号を１６進数表記したものを設定する。なお、ＦＡＴファイルシステムの規格によれば、ファイルサイズフィールドは空きフィールドであり、通常、全体に「０」が設定される。
さらに、属性フィールドには、サブディレクトリ識別項目のファイルサイズフィールドに情報が記録されていることを示す情報（つまり、本実施形態の携帯端末１による記録方式を採用していることを示す使用フラグ、「０ｘ５０」）を設定する。なお、ＦＡＴファイルシステムの規格によれば、通常、属性フィールドには「０ｘ１０」が設定される。
【００２７】
さらに、ＣＰＵ７は、メモリーカード（不図示）に記録されている複数のファイルから所望のファイルを検索するために、その所望のファイルのファイル名として文字入力ユニット３から文字列の情報が入力されるとファイル検索処理（後述）を実行する。そして、ＣＰＵ７は、ファイル検索処理（後述）が実行されると、ディレクトリエントリ読出指令（後述）をＩ／Ｆ６経由でメモリーカードユニット４に出力して、各ファイルのファイル名のディレクトリエントリをメモリーカード（不図示）から順次読み出す。また、ＣＰＵ７は、その読み出されたディレクトリエントリの名前フィールドに記録されている文字列と前記入力された文字列とが一致しているか否かを判定し、それらが一致している場合には、ファイル読出指令（後述）をメモリーカードユニット４に出力して、前記ディレクトリエントリが読み出されたファイルを表示ユニット５に表示させてから、このファイル検索処理（後述）を終了する。なお、ファイル検索処理（後述）の実行中に、ファイル名のディレクトリエントリを先頭クラスタから全て読み出し終えた場合には、サブディレクトリ識別項目をメモリーカード（不図示）から読み出し、そのサブディレクトリ識別項目の属性フィールドに記録されている情報とファイルサイズフィールドに記録されている情報とを読み出す。そして、その読み出された属性フィールドに「０ｘ５０」が記録されている場合には、ファイルサイズフィールドに記録されている情報が示すクラスタ番号に記録されているファイルのディレクトリエントリの情報を順次読み出すようになっている。
【００２８】
さらに、ＲＡＭ８は、ＣＰＵ７で実行される各種プログラムを展開するためのワークエリアと、それら各種プログラムの実行時に用いられるデータを記録するためのメモリ領域とを形成する。そして、ＲＡＭ８は、ＣＰＵ７から読み出し要求が出力されると、ＲＡＭ３に記録されているデータから当該読み出し要求に応じたデータをＣＰＵ７に出力する。
また、ＲＯＭ９は、ＣＰＵ７で実行される各種プログラムとデータとを記録する。そして、ＲＯＭ９は、ＣＰＵ７から読み出し要求が出力されると、ＲＯＭ９に記録されているプログラムやデータから当該読み出し要求に応じたプログラム等をＣＰＵ７に出力する。
【００２９】
＜携帯端末の動作＞
次に、ＣＰＵ７で実行されるディレクトリエントリ生成処理を、図３のフローチャートに従って説明する。このディレクトリエントリ生成処理は、新生成ファイルを記録するサブディレクトリのファイルパス、及び新生成ファイルのファイル名の組み合わせとして、文字入力ユニット３から文字列の情報が入力されると実行される。そして、この演算処理が実行されると、まず、そのステップＳ１０１で、メモリーカード（不図示）の記録方式として、本実施形態の携帯端末１のファイルシステムによる記録方式と、ＦＡＴファイルシステムによる記録方式とのいずれが採用されているのかを判定する。具体的には、本実施形態の携帯端末１による記録方式を採用していることを示す使用フラグ「０ｘ５０」が、サブディレクトリ識別項目の属性フィールドにセットされているか否かを判定する。そして、使用フラグがセットされている場合（Ｙｅｓ）、つまり、本実施形態による記録方式が採用されている場合にはステップＳ１０２に移行する。また、使用フラグがセットされていない場合（Ｎｏ）、つまり、ＦＡＴファイルシステムによる記録方式が採用されている場合にはステップＳ１０７に移行する。なお、使用フラグは、サブディレクトリが生成され、それに伴って、サブディレクトリ識別項目が生成されるときにセットされる。
【００３０】
次にステップＳ１０２に移行して、前記サブディレクトリを示すサブディレクトリ識別項目のファイルサイズフィールドに、先頭クラスタ番号フィールドに記録されている情報が示すクラスタの直後に続くクラスタのクラスタ番号（以下、「後続するクラスタ番号」とも呼ぶ。）が記録されているか否かを判定する。そして、後続するクラスタ番号が記録されている場合には（Ｙｅｓ）ステップＳ１０３に移行し、記録されていない場合には（Ｎｏ）ステップＳ１０４に移行する。
【００３１】
前記ステップＳ１０３では、サブディレクトリ識別項目のファイルサイズフィールドに記録されているクラスタ番号を取得してから、前記ステップＳ１０４に移行する。
前記ステップＳ１０４では、ＦＡＴファイルシステムの規格に従い、前記新生成ファイルのファイル名のディレクトリエントリのフィールド値を生成して記録する。具体的には、前記ステップＳ１０２の判定が「Ｙｅｓ」であったか否かを判定し、「Ｙｅｓ」であった場合には、ファイル名のディレクトリエントリを、前記ステップＳ１０３で取得されたクラスタ番号のクラスタに記録させる指令（以下、「ディレクトリエントリ記録指令」とも呼ぶ。）をメモリーカードユニット４に出力する。また、「Ｎｏ」であった場合には、ファイル名のディレクトリエントリを、前記サブディレクトリを示すサブディレクトリ識別項目の先頭クラスタ番号フィールドに記録されているフィールド値が示すクラスタ番号のクラスタに記録させるディレクトリエントリ記録指令をメモリーカードユニット４に出力する。なお、前記サブディレクトリを示すサブディレクトリ識別項目の先頭クラスタ番号フィールドに記録されているフィールド値が示すクラスタ番号のクラスタに前記新生成ファイルのファイル名のディレクトリエントリを記録できるだけの領域が残っていない場合は、先頭クラスタの直後に続く新しいクラスタを確保し、その新しく確保されたクラスタに記録させるディレクトリエントリ記録指令をメモリーカードユニット４に出力する。
【００３２】
次にステップＳ１０５に移行して、前記ステップＳ１０４で新しいクラスタが確保されたか否かを判定し、確保された場合には（Ｙｅｓ）ステップＳ１０６に移行し、確保されていない場合（Ｎｏ）、つまり、前記サブディレクトリを示すサブディレクトリ識別項目の先頭クラスタ番号フィールドに記録されているフィールド値が示すクラスタ番号のクラスタに前記新生成ファイルのファイル名のディレクトリエントリを記録できるだけの領域が残っており、何もする必要がない場合には、そのままこの演算処理を終了する。
【００３３】
前記ステップＳ１０６では、前記ステップＳ１０４で新しく確保されたクラスタのクラスタ番号を、前記サブディレクトリを示すサブディレクトリ識別項目のファイルサイズフィールドに記録してから、この演算処理を終了する。
一方、前記ステップＳ１０７では、ＦＡＴファイルシステムの規格に基づいて、ディレクトリエントリ作成処理を実行してから、この演算処理を終了する。
【００３４】
次に、ＣＰＵ７で実行されるファイル検索処理を、図４のフローチャートに従って説明する。このファイル検索処理は、任意のサブディレクトリに記録されている複数のファイルから所望のファイルを検索するために、その所望のファイルのファイル名、即ち、当該検索の対象となるファイルが記録されているサブディレクトリのファイルパスとして文字入力ユニット３から文字列の情報が入力されると実行される処理であって、まずそのステップＳ２０１で、利用者によって指定されたファイルパスに対応するサブディレクトリを示すサブディレクトリ指示項目が示すクラスタにおける記録位置の先頭から順番に、ファイル名のディレクトリエントリを読み出してＣＰＵ７に出力させる指令（以下、「ディレクトリエントリ読出指令」とも呼ぶ。）をＩ／Ｆ６経由でメモリーカードユニット４に出力する。また、前記クラスタに記録されているファイル名のディレクトリエントリが全て読み出されると、前記クラスタ内のサブディレクトリ識別項目を読み出し、そのサブディレクトリエントリ識別項目の属性フィールドに「０ｘ５０」が記録されているか否かを判定する。そして、「０ｘ５０」が記録されている場合には、前記サブディレクトリエントリ識別項目のファイルサイズフィールドに記録されている情報が示すクラスタ番号に記録されているファイル名のディレクトリエントリを読み出してＣＰＵ７に出力させる。また、「０ｘ１０」が記録されている場合には、ＦＡＴを読み出し、そのＦＡＴを参照してクラスタチェーンを解析し、前記情報が示すクラスタに続くクラスタを特定する。そして、その特定されたクラスタを先頭から読み出し、その読み出されたクラスタに記録されているファイル名のディレクトリエントリを読み出してＣＰＵ７に出力するものとする。
【００３５】
次にステップＳ２０２に移行して、前記ステップＳ２０１で読み出されたディレクトリエントリのファイル名フィールドに含まれる文字列が、前記利用者によって入力されたファイル名の文字列と一致するか否かを判定する。そして、それらが一致する場合には（Ｙｅｓ）前記ステップＳ２０１でディレクトリエントリが読み出されたファイルをメモリーカード（不図示）から読み出して表示ユニット５に出力させる指令（以下、「ファイル読出指令」とも呼ぶ。）をＩ／Ｆ６経由でメモリーカードユニット４に出力してから、この演算処理を終了し、一致しない場合には（Ｎｏ）次に記録されているファイル名のディレクトリエントリを読み出して解析するために、前記ステップＳ２０１に移行する。
【００３６】
＜携帯端末の具体的動作＞
次に、本実施形態の携帯端末１の動作を具体的状況に基づいて詳細に説明する。
＜ファイルの生成＞
まず、利用者が撮像のための操作をし、その操作により、被写体の画像データが撮像ユニット２のＣＣＤカメラ（不図示）で生成されたとする。すると、図１に示すように、撮像ユニット２によって、その生成された画像データがＩ／Ｆ６経由でＣＰＵ７に出力される。そして、ＣＰＵ７によって、その出力された画像データのファイルが生成される。
【００３７】
次いで、その生成されたファイル（新生成ファイル）を記録するサブディレクトリのファイルパス（メモリーカード（不図示）内の任意のサブディレクトリのファイルパス）、及び新生成ファイルのファイル名の組み合わせとして、利用者が文字入力ユニット３のキーボード（不図示）から文字列を入力したとする。すると、ＣＰＵ７によって、ファイル格納指令がＩ／Ｆ６経由でメモリーカードユニット４に出力される。そして、メモリーカードユニット４によって、前記生成されたファイルが前記ファイルパスに格納される。
【００３８】
また同時に、ＣＰＵ７によって、ディレクトリエントリ生成処理が実行され、その際、前記サブディレクトリを示すサブディレクトリ識別項目の属性フィールドに使用フラグ「０ｘ５０」がセットされており、また、前記ファイル名を記録するためのディレクトリエントリを記録できるだけの領域が、前記サブディレクトリを示すサブディレクトリ指示項目の先頭クラスタ番号フィールドが示すクラスタ（先頭クラスタ）内に残っておらず、先頭クラスタの直後に続くクラスタ（後続するクラスタ）が確保されている（先頭クラスタ内のサブディレクトリ識別項目のファイルサイズフィールドにクラスタ番号が記録されていた）とする。すると、図３に示すように、そのステップＳ１０１及びＳ１０２の判定が「Ｙｅｓ」となり、ステップＳ１０３で、サブディレクトリ識別項目のファイルサイズフィールドに記録されているクラスタ番号が取得される。即ち、サブディレクトリ識別項目のファイルサイズフィールドを読み出すことで、後続するクラスタ番号を取得することができるため、例えば、ＦＡＴのクラスタチェーンを解析することで後続するクラスタ番号を取得する方法に比べ、負荷が小さくてすみ、内部処理の効率化することができる。
【００３９】
さらに、ステップＳ１０４で、ディレクトリエントリ記録指令がＩ／Ｆ６経由でメモリーカードユニット４に出力され、また、ステップＳ１０６の判定が「Ｎｏ」となり、この演算処理を終了する。そして、メモリーカードユニット４によって、図２に示すように、ＦＡＴファイルシステムの規格に従ってファイル名のディレクトリエントリが生成され、その生成されたディレクトリエントリが、前記後続するクラスタに記録される。
【００４０】
＜ファイルの検索＞
また、上記フローが繰り返し実行され、複数のファイルが記録された後に、所定のサブディレクトリに記録されている複数のファイルから所望のファイルを検索するために、その所望のファイルのファイル名、即ち、当該検索の対象となるファイルが記録されているディレクトリのファイルパスとして利用者が文字入力ユニット３から文字列の情報を入力したとする。すると、ＣＰＵ７によって、ファイル検索処理が実行され、図４に示すように、まず、そのステップＳ２０１で、ディレクトリエントリ読出指令がＩ／Ｆ６経由でメモリーカードユニット４に出力される。そして、メモリーカードユニット４によって、利用者によって指定されたファイルパスに対応するディレクトリのサブディレクトリ指示項目が示す先頭クラスタにおける記録位置の先頭のディレクトリエントリがメモリーカード（不図示）から読み出されてＣＰＵ７に出力される。また、そのディレクトリエントリのファイル名フィールドに含まれている文字列が、前記利用者によって入力されたファイル名と一致しなかったとする。すると、ステップＳ２０２の判定が「Ｎｏ」となり、前記ステップＳ２０１から上記フローが繰り返し実行され、前記読み出されたディレクトリエントリに続くディレクトリエントリが先頭クラスタから順次読み出される。
【００４１】
そして、上記フローが繰り返し実行されるうちに、先頭クラスタに記録されている全てのファイル名のディレクトリエントリが読み出されたとする。すると、メモリーカードユニット４によって、サブディレクトリ識別項目の属性フィールドに記録されているフィールド値が読み出され、また、その読み出されたフィールド値に「０ｘ１０」が記録されていたとする。すると、メモリーカード４によって、サブディレクトリ識別項目のファイルサイズフィールドが示すクラスタに記録されているファイル名のディレクトリエントリの読み出しが開始され、上記フローが再度繰り返し実行される。また、上記フローが繰り返し実行されるうちに、前記文字列が前記入力されたファイル名と一致したとすると、ファイル読出指令がＩ／Ｆ６経由でメモリーカードユニット４に出力されてから、ステップＳ２０２の判定が「Ｙｅｓ」となり、この演算処理を終了する。そして、メモリーカードユニット４によって、前記ディレクトリエントリが読み出されたファイルがメモリーカード（不図示）から読み出されて表示ユニット５に出力され、表示ユニット５によって、そのファイルが開かれて当該ファイルに含まれる画像データが表示装置（不図示）に表示される。
【００４２】
このように、本実施形態の携帯端末１にあっては、サブディレクトリ識別項目のファイルサイズフィールドに、先頭クラスタの直後に続くクラスタのクラスタ番号を記録するようにした。そのため、所定のサブディレクトリ内のファイルのディレクトリエントリやディレクトリのディレクトリエントリが複数のクラスタにまたがって記録されているとき（クラスタチェーンが生成されているとき）に、前記サブディレクトリ内から所望のファイルを検索する場合、つまり、前記ディレクトリエントリに対して検索処理を行う場合には、前記サブディレクトリを示すサブディレクトリ識別項目のファイルサイズフィールドに記録されているフィールド値を解析させることで、先頭クラスタの直後に続くクラスタのクラスタ番号を取得することができる。そのため、例えば、ＦＡＴを参照してクラスタチェーンの解析処理することで後続するクラスタを特定する方法に比べ、クラスタチェーンに関するソフトウェア（ファームウェア）処理の高速化を図ることが可能である。
【００４３】
また、サブディレクトリ識別項目の属性フィールドやファイルサイズフィールド以外のフィールド値は、ＦＡＴファイルシステムの規格に従って設定した。そのため、携帯端末１で生成されたファイルは、ＦＡＴファイルシステムを搭載したパソコンでも適切に認識させることができ、それらのパソコンでファイルをそのまま扱わせることができる。なお、ＦＡＴファイルシステムを搭載したパソコンで、利用者によるファイル操作が行われることで、属性フィールドやファイルサイズフィールドがＦＡＴファイルシステムの規定に従ったものに書き換えられてしまったファイルについては、携帯端末１に属性フィールドやファイルサイズフィールドの適切な書き直し等の処理を行わせるようにしてもよい。
【００４４】
以上、上記実施形態では、図３のステップＳ１０３が特許請求の範囲に記載の記録機能を構成し、以下同様に、図４のステップＳ２０１が特定機能を構成し、図１のＣＰＵ７、メモリーカードユニット４及び、図３のステップＳ１０３が記録手段を構成し、図１のＣＰＵ７、図４のステップＳ２０１が特定機能を構成する。
なお、本発明のファイル管理プログラム、データ構造及びファイル管理装置は、上記実施の形態の内容に限定されるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更可能である。
【００４５】
上記実施形態では、サブディレクトリ識別項目のファイルサイズフィールドに後続するクラスタ番号を記録する例を示したが、これに限られるものではない。例えば、サブディレクトリ識別項目の予約フィールドに記録するようにしてもよく、また、サブディレクトリ指示項目や親ディレクトリ指示項目の空きフィールド（ファイルサイズフィールド、或いは予約フィールド）に記録するようにしてもよい。サブディレクトリ指示項目の空きフィールドに後続するクラスタ番号を記録する方法によれば、サブディレクトリ指示項目を解析した時点で、そのサブディレクトリ指示項目が示すクラスタに後続するクラスタがあるか否かを判定することができる。そのため、例えば、所定のサブディレクトリのクラスタにディレクトリエントリを記録するときに、そのサブディレクトリのサブディレクトリ指示項目の解析により、前記後続するクラスタがあると判定された場合には、そのまま直ぐに、前記後続するクラスタに前記ディレクトリエントリを記録することができる。
【００４６】
また、先頭クラスタの直後に続くクラスタのクラスタ番号を示すフィールド値（情報）を、サブディレクトリ識別項目のファイルサイズフィールドに記録する例を示したが、これに限られるものではない。例えば、ディレクトリエントリが３つ以上のクラスタにまたがって記録されているときには、先頭クラスタに続く複数のクラスタ番号を記録するようにしてもよい。
【００４７】
さらに、サブディレクトリ指示項目の空きフィールド、サブディレクトリ識別項目の空きフィールド、及び親ディレクトリ指示項目空きフィールドの少なくとも２つに、同じクラスタ番号を記録するようにしてもよい。そのようにすれば、例えば、２つの空きフィールドに同じクラスタ番号を記録することで、一方の空きフィールドに記録されているクラスタ番号を読み出せなくなった場合に、他方の空きフィールドに記録されているクラスタ番号を読み出すことができる。即ち、クラスタ番号のデータを二重化することができ、安全性を向上することができる。
【００４８】
さらに、サブディレクトリ指示項目の空きフィールド、サブディレクトリ識別項目の空きフィールド、及び親ディレクトリ指示項目の空きフィールドの少なくとも２つに、異なるクラスタ番号を記録するようにしてもよい。そのようにすれば、例えば、一方の空きフィールドの記憶領域にクラスタ番号を記憶できる領域がなくなった場合に、他方の空きフィールドの記憶領域にクラスタ番号を記録することができる。即ち、複数の空きフィールドに同じデータを記録する方法に比べ、より多くのクラスタ番号を記録することができ、効率性を向上することができる。
【００４９】
また、ファイル管理プログラムを実現する組み込み機器用のファームウェアの内部処理や、実装コードに少しでも有益となるその他のフィールド値を記録させてもよい。
【図面の簡単な説明】
【００５０】
【図１】実施形態における携帯端末の内部構成を示すブロック図である。
【図２】サブディレクトリ識別項目を説明するための説明図である。
【図３】ディレクトリエントリ生成処理のフローチャートである。
【図４】ファイル検索処理のフローチャートである。
【符号の説明】
【００５１】
１は携帯端末、２は撮像ユニット、３は文字入力ユニット、４はメモリーカードユニット、５は表示ユニット、６はＩ／Ｆ、７はＣＰＵ、８はＲＡＭ、９はＲＯＭ、１０はバス
【図１】
2006127444.tif 000003
【図２】
2006127444.tif 000004
【図３】
2006127444.tif 000005
【図４】
2006127444.tif 000006