(57)【特許請求の範囲】
【請求項１】
階層化構造を持つファイルシステムでフォーマットされた記憶媒体に記憶されたファイルに対するファイルパスの管理表を管理するためのメモリを有するファイル管理装置であって、
前記記憶媒体に格納された各ファイルに対応しているディレクトリエントリをサーチし、各ファイルに対応している前記ディレクトリエントリの前記記憶媒体における絶対アドレス位置を検出する検出手段と、
該検出手段で検出した絶対アドレス位置を表わす情報を、予め設定された書式及び文字数の文字列に変換し、当該文字列を、該当するファイルの仮想ファイル名として、前記メモリの中のファイル名エントリー領域に登録する登録手段と、
前記記憶媒体のファイルを管理するためのファイルシステムの種類を判定する第１の判定手段とを備え、
該第１の判定手段によって判定したファイルシステムがｅｘＦＡＴの場合、前記登録手段は前記メモリの中のファイル名エントリー領域に前記仮想ファイル名を登録し、
前記第１の判定手段によって判定したファイルシステムが前記ｅｘＦＡＴ以外の場合、前記登録手段は前記メモリの中のファイル名エントリー領域に実ファイル名を登録することを特徴とするファイル管理装置。
【請求項２】
前記メモリの中のファイル名エントリー領域に登録されたファイル名の記述の形式が、ディレクトリのパス付き実ファイル名の形式であるか、前記仮想ファイル名の形式であるかを判定する第２の判定手段と、
該第２の判定手段によって、前記仮想ファイル名の形式であると判定した場合は、前記ファイル名エントリー領域に登録されている前記仮想ファイル名を、前記記憶媒体の絶対アドレス位置を示す情報に変換し、変換した絶対アドレス位置に従って前記記憶媒体から情報を読み出す読み出し手段と
を有することを特徴とする請求項１に記載のファイル管理装置。
【請求項３】
前記第２の判定手段は、ファイル名の拡張子に基づき、前記仮想ファイル名か否かを判定することを特徴とする請求項２に記載のファイル管理装置。
【請求項４】
上位処理から、仮想ファイル名のファイルの前記ファイルシステムにおける実ファイル名の取得の要求があった場合、前記読み出し手段は、要求された仮想ファイル名の中の文字列に基づき、前記ディレクトリエントリに格納されている実ファイル名を取得することを特徴とする請求項２又は３に記載のファイル管理装置。
【請求項５】
階層化構造を持つファイルシステムでフォーマットされた記憶媒体に記憶されたファイルに対するファイルパスの管理表を管理するためのメモリを有するファイル管理装置の制御方法であって、
前記記憶媒体に格納された各ファイルに対応しているディレクトリエントリをサーチし、各ファイルに対応している前記ディレクトリエントリの前記記憶媒体における絶対アドレス位置を検出する検出工程と、
該検出工程で検出した絶対アドレス位置を表わす情報を、予め設定された書式及び文字数の文字列に変換し、当該文字列を、該当するファイルの仮想ファイル名として、前記メモリの中のファイル名エントリー領域に登録する登録工程と、
前記記憶媒体のファイルを管理するためのファイルシステムの種類を判定する第１の判定工程とを備え、
該第１の判定工程によって判定したファイルシステムがｅｘＦＡＴの場合、前記登録工程では前記メモリの中のファイル名エントリー領域に前記仮想ファイル名を登録し、
前記第１の判定工程によって判定したファイルシステムが前記ｅｘＦＡＴ以外の場合、前記登録工程では前記メモリの中のファイル名エントリー領域に実ファイル名を登録することを特徴とするファイル管理装置の制御方法。
【請求項６】
コンピュータに読み込ませ実行させることで、前記コンピュータを、請求項１乃至４のいずれか１項に記載のファイル管理装置として機能させるコンピュータプログラム。
【請求項７】
請求項６に記載のコンピュータプログラムを格納したことを特徴とするコンピュータが読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は記憶媒体内に格納されたファイルの管理技術に関するものである。
【背景技術】
【０００２】
ランダムアクセス可能な記憶媒体（ハードディスクやコンパクトフラッシュ（登録商標）メモリ等）にファイルを記憶し管理する場合、昨今のファイルシステムではディレクトリを何段階にも設定し、且つ、ファイルの名前も非常に長い文字列が扱えるようになった。このようなファイルシステムでは、１つのファイルを特定する場合、そのファイルに到達するまでのディレクトリ名とそのファイル名を記述し、管理することになる。
【０００３】
また、仮想的にファイル名を管理する仮想ファイル名管理方法として、ファイル名とそのファイルの位置を格納したファイル資源管理表と、仮想ファイル名とその位置と手続き名を格納した仮想ファイル名管理部と、手続き名と手続きの定義を管理した手続き管理表を持ち、仮想ファイル名を用いて実ファイルにアクセスするというものがある（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平０８−１１０８６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、前述のように、各ファイルのフルパス名を管理表として記憶する方法では、一つの階層名が長い場合や幾層もの階層（ディレクトリ）でファイルパスが構成されている場合には、管理表を記憶するために多くのメモリ資源が必要となってしまう。
【０００６】
特許文献１のような仮想ファイル名管理方法では、管理するファイル名の数に比例して記憶すべき容量が増加してしまうため、多くのメモリ資源を必要とし、且つファイル名の検索時間も比例して長くなってしまうという問題が残る。
【０００７】
そこで、本発明は、多階層のディレクトリで記憶管理されている各ファイルを、より少ない情報量で記憶管理すると共に、ファイルのデータへのアクセスを更に高速化させる技術を提供しようとするものである。
【課題を解決するための手段】
【０００８】
この課題を解決するため、例えば本発明のファイル管理装置は以下の構成を備える。すなわち、
階層化構造を持つファイルシステムでフォーマットされた記憶媒体に記憶されたファイルに対するファイルパスの管理表を管理するためのメモリを有するファイル管理装置であって、
前記記憶媒体に格納された各ファイルに対応しているディレクトリエントリをサーチし、各ファイルに対応している前記ディレクトリエントリの前記記憶媒体における絶対アドレス位置を検出する検出手段と、
該検出手段で検出した絶対アドレス位置を表わす情報を、予め設定された書式及び文字数の文字列に変換し、当該文字列を、該当するファイルの仮想ファイル名として、前記メモリの中のファイル名エントリー領域に登録する登録手段と、
前記記憶媒体のファイルを管理するためのファイルシステムの種類を判定する第１の判定手段とを備え、
該第１の判定手段によって判定したファイルシステムがｅｘＦＡＴの場合、前記登録手段は前記メモリの中のファイル名エントリー領域に前記仮想ファイル名を登録し、
前記第１の判定手段によって判定したファイルシステムが前記ｅｘＦＡＴ以外の場合、前記登録手段は前記メモリの中のファイル名エントリー領域に実ファイル名を登録することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、記憶媒体内のファイルのファイルシステム上の記憶位置の代りに、その記憶媒体の絶対アドレス位置として扱うので、ファイルを管理するメモリ容量はファイルパス長によらず、少なくできる。また、ファイルのフルパスによる記憶位置と仮想ファイル名は一意に求まる可逆変換なので、ファイルの物理的位置と仮想ファイル名とを対比させる管理表を持つ必要がなく、メモリも節約でき且つ高速にファイルにアクセスすることが可能となる。
【図面の簡単な説明】
【００１０】
【図１】本発明の一実施形態としてのパーソナルコンピュータのブロック図。
【図２】第１の実施形態のファイルアクセス処理のフローチャート。
【図３】第１の実施形態の仮想ファイル名取得処理のフローチャート。
【図４】第１の実施形態のファイルアクセス処理のフローチャート。
【図５】第２の実施形態のファイル名取得処理のフローチャート。
【図６】第３の実施形態のファイル名取得処理のフローチャート。
【図７】第４の実施形態のファイルアクセス処理のフローチャート。
【図８】第５の実施形態のファイルアクセス処理のフローチャート。
【図９】第６の実施形態の実ファイル名取得処理のフローチャート。
【図１０】第１の実施形態の文字列変換処理のフローチャート。
【図１１】第６の実施形態の実ファイル名の記憶領域と仮想ファイル名の記憶領域にそれぞれ記憶されているリストをあらわす図。
【図１２】仮想ファイル名、ファイルシステム、実ファイル名の関係を表す図。
【図１３】本発明の一実施形態としての、ＦＡＴファイルシステムのディレクトリエントリとデータ領域を表す図。
【発明を実施するための形態】
【００１１】
以下、添付図面に従って本発明に係る実施形態を詳細に説明する。
【００１２】
図１は本発明が実施されうるコンテンツ管理装置の一例としてのパーソナルコンピュータ（以下ＰＣ）１００の構成例を示している。図示のように、ＰＣ１００は内部バス１１１で接続されたＣＰＵ（中央演算装置）１０１、ハードディスク（ＨＤ）１０２、メモリ１０３、ディスプレイ１０４、入力部１０５、記録媒体ドライブ１０６、ネットワークインターフェイス（Ｉ／Ｆ）１０７を備えている。ＣＰＵ１０１はコンテンツ管理装置の動作を制御する演算処理装置であり、入力部１０５等を介してユーザからの指示受け付けをし、後述する各種プログラムを実行し、ディスプレイ１０４の表示制御を行う。ＨＤ１０２には画像や、ＣＰＵ１０１の動作処理手順（例えばコンピュータの立ち上げ処理や基本入出力処理、後述する本発明の各処理等のプログラム）が記録されている。メモリ１０３はＣＰＵ１０１のワークエリアとして使用される。ディスプレイ１０４は本実施形態によるグラフィックユーザインターフェースを表示するための表示部であり、この表示部上に後述する画像や表示アイテムが表示される。入力部１０５は、ユーザからの指示を受け付けるための入力部であり、キーボードやポインティングデバイスとしてのマウス等の入力デバイスである。ユーザは入力部１０５を使用することで、コンテンツ管理プログラムを実行できるような構成となっている。記録媒体ドライブ１０６は、CD-ROMやDVD-ROM、フラッシュメモリ等からなるランダムアクセス可能な外部記録媒体１０８に格納されているデータの読み出しや、外部記録媒体１０８にデータの書き込みを行う装置である。Ｉ／Ｆ１０７は通信回線１０９を介してネットワーク１１０と接続される。ＣＰＵ１０１がＩ／Ｆ１０７を介してネットワーク１１０上にあるプログラムを実行することも可能であり、ネットワーク１１０上のプログラムにも本発明を適用できる。
【００１３】
図１２はＦＡＴファイルシステムのディレクトリエントリとデータ領域を表す図である。ディレクトリエントリには、ファイルシステムに保存されているファイルのファイル名、属性、作成・更新・修正時間、実データの開始クラスタ番号などが記載されている。そしてデータ領域には、ファイルの実データが保存されており、実データが保存されている場所は前述のディレクトリエントリに記載されている実データの開始クラスタ番号によって示されている。
【００１４】
＜第１の実施形態＞
第１の実施形態では、外部記録媒体１０８（階層化構造を持つファイルシステムでフォーマットされた記憶媒体）に記憶されているファイルを、仮想ファイル名で管理するか、実ファイル名で管理するかを自動的に切り替える例を述べる。
【００１５】
図２はディレクトリに存在するファイル名を取得する際、記録媒体のファイルシステムがｅｘＦＡＴの場合は仮想ファイル名を扱い、exFAT以外のファイルシステムの場合は実ファイル名を扱うＣＰＵ１０１の処理のフローチャートである。このフローチャートに係る処理は、外部記憶媒体１０８が記録媒体ドライブ１０６にセットされたことをトリガにして実行されるものとするが、例えば、ユーザによる指示入力をトリガにしても構わない。
【００１６】
ファイル名取得処理に入ると、ステップＳ２０１で記録媒体のファイルシステムの種類がｅｘＦＡＴであるか否かの判定を行う。ｅｘＦＡＴファイルシステムでフォーマットされていると判定した場合はステップＳ２０２へ進み、否と判定した場合はステップＳ２０４へ進む。ステップＳ２０２では、外部記憶媒体１０８にどのようなファイルがあるのかをチェックするためスキャン処理を行い、検出されたファイルの名前と１対１の関係を有する仮想ファイル名の取得を行う（その仮想ファイル名の生成処理は後述する）。ステップＳ２０３では、取得したファイルの実ファイル名または仮想ファイル名を、メモリ１０３に確保したファイル名エントリー領域（後のファイルアクセスする際に参照される）に登録する。ステップＳ２０４では、ＰＯＳＩＸ準拠のreaddir関数を用いて、ディレクトリエントリに記載されている実ファイル名の取得を行う。
【００１７】
図３は前述のステップＳ２０２の仮想ファイル名取得処理のフローチャートである。仮想ファイル名取得処理に入るとステップＳ３０１にて、ディレクトリエントリを読み出しファイルの検索（検出）を行う。そしてステップＳ３０２へ進む。ステップＳ３０２では、ステップＳ３０１で検索したファイルのディレクトリエントリの記録媒体上の物理的位置の取得を行う。ここで言う、物理的位置とは、セクタ番号やセクタ内のバイトオフセット、および親ディレクトリの開始クラスタ番号であり、それぞれ４バイトのデータ長である。そしてステップＳ３０３へ進む。ステップＳ３０３では、ステップＳ３０２で取得したファイルの記録媒体上の物理的位置を文字列に変換する。ここでの文字列変換はASCIIコードやUnicodeなど任意の文字コードへの変換を行い、変換後の文字列長は記録媒体上の物理的位置によらず固定長とする。ここで変換した文字列を仮想ファイル名とする。
【００１８】
図１０は前述のステップＳ３０３で行っている、物理的位置各４バイトの情報を６文字のＡＳＣＩＩ文字列に可逆に変換する処理のフローチャートである。ステップＳ１００１では、変換した文字列のNULL文字場所（PosZero）、変換した文字列のスラッシュ文字場所(PosSlash)、ループカウンタ（i）の初期化を行う、ステップＳ１００２へ進む。ステップＳ１００２では、ループカウンタｉが４未満か否かを判定し、４未満だと判定した場合はステップＳ１００３へ進み、否と判定した場合はステップＳ１００９へと進む。ステップＳ１００３では、ステップＳ３０２で取得した物理的位置データ(Data)から１バイトtmpへ代入し、ステップＳ１００４へ進む。ステップＳ１００４では、ステップＳ１００３で代入したtmpがNULL文字か否かの判定を行う。NULL文字であると判定した場合はステップＳ１００５へ進み、否と判定した場合はステップＳ１０１０へと進む。ステップＳ１００５では、NULL文字場所の記憶を行う。NULL文字場所の記憶はビットアサインで行う。そしてステップＳ１００６へ進む。ステップＳ１００６では、tmpの値を上書きする。フローチャートでは0xFFを代入しているが、NULL文字もしくは’/’でなければ、任意の値で構わない。そしてステップＳ１００７へ進む。ステップＳ１００７では、あらかじめ確保した文字列領域（Moji）にtmpの値を代入し、ステップＳ１００８へと進む。ステップＳ１００８ではループカウンタをインクリメントし、ステップＳ１００２へと進む。ステップＳ１０１０ではステップＳ１００３で代入したtmpが’/’か否かの判定を行う。’/’であると判定した場合はステップＳ１０１１へと進み、否と判定した場合はステップＳ１００７へと進む。ステップＳ１０１１ではスラッシュ文字の場所の記憶を行う。記憶方法はステップＳ１００５と同様である。ステップＳ１００９では、PosZeroとPosSlashをそれぞれ確保した文字列領域の５バイト目と４バイト目に格納する。
【００１９】
図１０の処理をそれぞれ、セクタ番号やセクタ内のバイトオフセット、および親ディレクトリの開始クラスタ番号に対して行い、１つの文字列として連結し１８バイトのファイル名とし、文字列の末尾に任意の拡張子４バイトを付加することにより、計２３バイト（NULL文字１バイト含む）の仮想ファイル名となる。この仮想ファイル名の文字列には、該当するファイルの記憶媒体内の絶対アドレス位置以外に、そのファイルをダイレクトに管理するディレクトリ（該当するファイルを管理する真上のディレクトリ）のエントリーの記憶媒体内の絶対アドレス位置も含まれる。これは、ファイルの実ファイル名を得るためである。
【００２０】
図４はファイル名を用いてのファイルアクセス処理のフローチャートである。ステップＳ４０１は前述のステップＳ２０１と同様であるので記述を省略する。ステップＳ４０１においてｅｘＦＡＴフォーマットされていると判定した場合はステップＳ４０２へ進み、否と判定した場合はステップＳ４０５へ進む。ステップＳ４０２では、ファイル名が前述のステップＳ２０２で取得した仮想ファイル名の書式となっているか否かの判定を行う。仮想ファイル名と判定されるとステップＳ４０３へ進み、否と判定されるとステップＳ４０５へと進む。ステップＳ４０３では、仮想ファイル名をそのファイルが存在する記録媒体の物理的位置へと変換する。つまり、ステップＳ３０３の変換と逆の変換を行う。そしてステップＳ４０４へと進む。ステップＳ４０４では、ステップＳ４０３で求められたファイルの物理的位置を用いて記録媒体に保存されているファイルへアクセスする。一方、ステップＳ４０５では、ＰＯＳＩＸ準拠のopen関数を用いて、指定されたファイルのopen処理を行う。
【００２１】
以上説明したように、ｅｘＦＡＴのようにショートネームを格納するディレクトリエントリが存在しないファイルシステムの場合、たとえそのファイルが多階層のディレクトリを通して管理され、そのファイル名が何文字であっても、固定長の仮想ファイル名として管理することができるためメモリ資源を節約することが可能となる。
【００２２】
例えば、各階層（ディレクトリ）が２５５文字のアルファベットで表わされるディレクトリで構成され、６階層目にファイルが有り、ファイル名も２５５文字のアルファベットで表現される場合を考察する。この場合、そのファイルをASCIIで記憶するためには、絶対パスだと1+(255+1)×6+1=1538バイトとなる(ドライブ名、NULL文字含む)。同様のファイル1000個を記憶管理するためには1538×1000＝1538000バイトの記憶容量を必要とする。本実施形態によれば、どのようなファイル長でも１階層は１８文字、ファイル名は２３文字になるため、１ファイルは1+(18+1)×5+1+23 =120バイトとなる。それを1000ファイル分記憶するためには120×1000=120000バイトの記憶容量で済む。
【００２３】
また、仮想ファイル名はファイルの物理的位置より一意に決められるため、高速なファイルアクセスが可能となる。また、実施形態では、ファイルシステムがｅｘＦＡＴの場合に仮想ファイル名の取得処理を行うのは、ｅｘＦＡＴファイルシステムの場合、ディレクトリ名、ファイル名の文字数の制限が、これまでのファイルシステムよりも緩いためである。すなわち、これまでよりも多くの文字列をディレクトリ名、ファイル名として扱え、１つのファイルをフルパス付き名で特定する場合に、そのフルパス名の文字数が膨大になりやすいためである。ただし、ファイルシステムがｅｘＦＡＴではなくとも、階層構造を持つ他のファイルシステムの場合、多階層のディレクトリのパス名でファイルを特定することに変わりはないので、仮想化ファイル名による管理を行っても構わない。なお、記録媒体１０６から外部記憶媒体１０８が取り去った場合、メモリ１０３に確保したファイル名エントリーの領域を初期化する。
【００２４】
＜第２の実施形態＞
第２の実施形態として、ファイル名を取得するクライアントが外部機器か否かで仮想ファイル名を扱うか実ファイル名を扱うかを自動的に切り替える例を述べる。これは、本装置が、ネットワーク上のファイルサーバとして機能する場合であって、要求元がネットワーク上にあるのか、操作者が入力部１０５を介して直接操作しているのかに基づいて判定する、と言えば分かりやすい。
【００２５】
図５はディレクトリに存在するファイル名を取得する際、ファイル名を取得するクライアントが外部機器の場合は実ファイル名を扱い、クライアントが外部機器でない場合は仮想ファイル名を扱う処理かを自動的に切り替えてファイル名を提供する処理のフローチャートである。ステップＳ５０１では、Ｉ／Ｆ１０７に外部機器が接続されているか否かの判定を行う。外部機器が接続されていると判定した場合はステップＳ５０２へ進み、否と判定した場合はステップＳ５０５へと進む。ステップＳ５０２では、ファイル名取得を行うクライアントが外部機器か否かの判定を行う。クライアントが外部機器であると判定した場合はステップＳ５０５へ進み。否と判定した場合はステップＳ５０３へ進む。ステップＳ５０３からステップＳ５０５は、前述のステップＳ２０２からステップＳ２０４までと同様であるので、説明を省略する。
【００２６】
以上説明したように、内部アプリケーションなどでは仮想ファイル名を用いて高速かつ省メモリでファイル管理を行うことができる。一方、ファイル名の表示や名前順にファイル表示順をソートするなど、実ファイル名を用いるクラアントに対しては、実ファイル名を提供することが可能となる。
【００２７】
＜第３の実施形態＞
第３の実施形態として、実ファイル名の長さによって仮想ファイル名を扱うか実ファイル名を扱うかを自動的に切り替える例を述べる。
【００２８】
図６は実ファイル名の長さによって、実ファイル名の長さによって自動的に仮想ファイル名を扱うか実ファイル名を扱うかを自動的に切り替えるファイル名取得処理のフローチャートである。ステップＳ６０１は前述のステップＳ２０４と同様であるので説明を省略する。続いて、ステップＳ６０２では、ステップＳ６０１で取得した実ファイル名の記憶を行い、ステップＳ６０３へ進む。ステップＳ６０３ではステップＳ６０２で記憶した実ファイル名の長さが閾値より短いか否かの判定を行う。ここで、閾値とは記録媒体のファイルシステムや実施するメモリの容量などに応じて任意に決定してよい。実ファイル名の長さ閾値より短いと判定した場合は処理を終了し、否と判定した場合はステップＳ６０４へと進む。ステップＳ６０４は前述のステップＳ２０２と同様であるので、説明を省略する。ステップＳ６０５ではステップＳ６０４で取得した仮想ファイル名の記憶を行う。ここで、仮想ファイル名の記憶を行う際に、ステップＳ６０２で記憶した実ファイル名の記憶領域に上書き保存してもよい。
【００２９】
以上説明したように、長い実ファイル名を記憶することなく仮想ファイル名を用いてファイルの管理をすることが可能となるので、メモリ資源を節約することができる。
【００３０】
＜第４の実施形態＞
第４の実施形態として、ファイルの拡張子の記述形式（拡張子の文字列）によって仮想ファイル名を扱うか実ファイル名を扱うかを自動的に切り替える例を述べる。
【００３１】
図７は、ファイルの拡張子によって仮想ファイル名を扱うか実ファイル名を扱うかを自動的に切り替えてファイルアクセスを行う処理のフローチャートである。ステップＳ７０１では、ファイルの拡張子が所定の拡張子と一致するか否かの判定を行う。所定の拡張子だと判定した場合はステップＳ７０２へ進み、否と判定した場合はステップＳ７０５へと進む。ステップＳ７０２からステップＳ７０５は前述のステップＳ４０２からステップＳ４０５と同様であるので、説明を省略する。
【００３２】
以上説明したように、管理ファイルや設定ファイルなど、頻繁にアクセスの発生するファイルを仮想ファイルで扱って高速にアクセスすることが可能となる。
【００３３】
＜第５の実施形態＞
第５の実施形態として、ファイルアクセスにおいてファイルを新規作成するか否かで仮想ファイル名を扱うか実ファイル名を扱うかを自動的に切り替える例を述べる。
【００３４】
図８は、ファイルを新規作成するか否かで仮想ファイル名を扱うか実ファイル名を扱うかを自動的に切り替えてファイルアクセスを行う処理のフローチャートである。ステップＳ８０１では、ファイルアクセスする際にクラアントがファイルの新規作成を行うか否かの判定を行う。ファイルを新規作成すると判定した場合はステップＳ８０５へと進み。否と判定した場合はステップＳ８０２へと進む。ステップＳ８０２からステップＳ８０５は前述のステップＳ４０２からステップＳ４０５と同様であるので説明を省略する。
【００３５】
以上説明したように、ファイル新規作成時のような仮ファイル名を取得できない場合は実ファイル名でアクセスでき、そうでない場合は仮ファイル名で高速にアクセスすることが可能となる。
【００３６】
＜第６の実施形態＞
第６の実施形態として、仮想ファイル名を用いて実ファイル名を取得しソートする例を述べる。ここで、扱うファイルの階層は最大６階層とし、扱う最大ファイル数は１０００個とする。
【００３７】
図９は、上位処理（アプリケーション等）からの実ファイル名要求に応えるため、仮想ファイル名を用いて実ファイル名を取得する処理のフローチャートである。ステップＳ９０１は前述のステップＳ４０３と同様であるので、説明を省略する。そしてステップＳ９０２へと進む。ステップＳ９０２ではステップＳ９０１で求められた物理的位置を用いて、記録媒体上に記録されている実ファイル名の読み出しを行う。
【００３８】
図１１は実ファイル名の記憶領域と仮想ファイル名の記憶領域にそれぞれ記憶されているリストをあらわす図である。ソートに用いるファイル名は実ファイル名である。例えば、バブルソートを用いてソートするならば、必要な実ファイル名は２つである。１ファイルの実ファイル名は最大1538バイトとなるので、実ファイル名記憶領域は1538×2=3076バイトとなる。
【００３９】
仮想ファイル名は最大1000ファイルのファイル名を記憶する必要があるので、必要な仮想ファイル名記憶領域の容量は48×1000=48000バイトとなる。
【００４０】
図１２は、仮想ファイル名と実ファイル名、及びファイルシステムとの関連を示す図である。ここで、仮想ファイル名は便宜的にA/######/$$$$$$/%%%%%%.&&&とし、それに対応する実ファイル名はA/DCIM/100CANON/IMG_0001/JPGとし、ファイルシステムはFATファイルシステムであるとする。仮想ディレクトリ#####を物理アドレスへ変換したときの値がxであるとすると、xはファイルシステム上のディレクトリエントリ上の任意のアドレスを示すことになる。ディレクトリエントリにはファイル（ディレクトリ）名や作成日時、属性、実データの開始クラスタ番号などのメタデータが記載されている。ディレクトリエントリを読み出すことにより、実ファイル（ディレクトリ）名を取得することができ、仮想ディレクトリ名#####に対応する実ディレクトリ名はDCIMであることが分かる。
【００４１】
以下同様に、仮想ディレクトリ名$$$$$$を物理アドレスへ変換するとyとなった時、yが指し示すディレクトリエントリに記載されているファイル名を読み取ると100GANONであることが分かる。そして、仮想ファイル名%%%%%%.&&&を物理アドレスへ変換するとzとなった時、zが指し示すディレクトリエントリに記載されているファイル名を読み取るとIMG_0001.JPGであることが分かる。
【００４２】
以上説明したように、実ファイル名を表示する際や、実ファイル名で複数のファイルをソートする際など、必要に応じて仮想ファイル名から実ファイル名を取得することが可能となる。また、仮想ファイル名は固定長で求められるため、実ファイル名を全て記憶する場合に比べて、メモリを節約することが可能である。また、実ファイル名を用いたファイルアクセス要求があった場合は、各階層のディレクトリエントリをサーチする必要があるが、仮想ファイル名のアクセス要求では直接ファイルの存在するディレクトリにアクセスするため高速に検索することができる。
【００４３】
［実施形態の適用例］
本実施形態は、特に、メモリカードスロットを有するプリンタに適用すると都合が良い。以下、その適用例を簡単に説明する。すなわち、メモリカードに格納した画像を、ユーザの操作により、印刷する場合である。
【００４４】
昨今のデジタルカメラ等の撮像装置で利用されるメモリカードの容量は増える一方であり、必然、その中に格納される画像ファイル数も膨大になる。また、メモリカード、ＰＣの外部記憶装置としても利用可能であるので、必然、そのメモリカード内には多階層のディレクトリで管理され、多数のファイルが混在することになる。本願発明を、このようなプリンタに適用すると都合が良い。すなわち、メモリカードの装着を検出したプリンタ内のＣＰＵは、プリンタ内のメモリに、仮想ファイル名で管理するように処理する。この結果、それ以降のユーザとのやりとり（ユーザによる印刷対象の画像の読出し、表示に係る処理）は、仮想ファイル名で良くなり、プリンタ内のメモリを圧迫せず、且つ、高いレスポンスのユーザインタフェースを構築することができる。
【００４５】
以上、本発明をその好適な実施形態に基づいて詳述してきたが、本発明はこれら特定の実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の様々な形態も本発明に含まれる。上述の実施形態の一部を適宜組み合わせてもよい。
【００４６】
また、上述の実施形態の機能を実現するソフトウェアのプログラムを、記録媒体から直接、或いは有線／無線通信を用いてプログラムを実行可能なコンピュータを有するシステム又は装置に供給し、そのプログラムを実行する場合も本発明に含む。
【００４７】
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータに供給、インストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明の機能処理を実現するためのコンピュータプログラム自体も本発明に含まれる。
【００４８】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等、プログラムの形態を問わない。
【００４９】
プログラムを供給するための記録媒体としては、例えば、ハードディスク、磁気テープ等の磁気記録媒体、光／光磁気記憶媒体、不揮発性の半導体メモリでもよい。
【００５０】
また、プログラムの供給方法としては、コンピュータネットワーク上のサーバに本発明を形成するコンピュータプログラムを記憶し、接続のあったクライアントコンピュータがコンピュータプログラムをダウンロードしてプログラムするような方法も考えられる。
【００５１】
（その他の実施形態）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
0005629438.tif 000002
【図２】
0005629438.tif 000003
【図３】
0005629438.tif 000004
【図４】
0005629438.tif 000005
【図５】
0005629438.tif 000006
【図６】
0005629438.tif 000007
【図７】
0005629438.tif 000008
【図８】
0005629438.tif 000009
【図９】
0005629438.tif 000010
【図１０】
0005629438.tif 000011
【図１１】
0005629438.tif 000012
【図１２】
0005629438.tif 000013
【図１３】
0005629438.tif 000014