(57)【要約】【課題】複数バイト文字を含む名称が付けられていても、複数バイト文字のコードの一部を、ディレクトリの境界を表すコードであると誤認識することがない情報処理装置、電子機器、プログラム及び情報処理方法を提供する。【解決手段】ファイルシステムは複数種のＦＡＴとファイル名変換部を備える。ファイル名変換部は、フルパスファイル名の階層毎のファイル特定名称（ディレクトリ名、ファイル名）を１文字ずつ解析する。このとき、１バイト文字であるか複数バイト文字であるかを判定し（S330）、複数バイト文字であり（S330で否定判定）、かつユニコードの英数字でもなければ（S340で否定判定）、ディレクトリエントリー配列のインデックスを取得する（S390）。そして、インデックスを７桁のＩＤとした後にＡＳＣＩＩコードに変換し、その先頭に識別コード「ＦＦ」（16進数）を付与して、ショートファイル名形式のファイル特定名称を生成する（S400）。【選択図】図９
2012194875.tif 000002
【特許請求の範囲】
【請求項１】
記憶媒体を接続可能な電子機器内に設けられ、当該電子機器内のアプリケーション部からの要求に応じて接続中の記憶媒体にアクセスして取得したデータ特定情報を前記アプリケーション部に渡す情報処理装置であって、
前記データ特定情報に含まれる第１名称が複数バイト文字を含むか否かを判定する判定手段と、
前記第１名称が複数バイト文字を含むと判定された場合に、前記第１名称を１バイト文字列の第２名称に変換する名称変換手段と、を備え、
前記名称変換手段は、前記記憶媒体における前記データ特定情報の所在位置を示す一意な所在位置情報のうち前記第１名称と対応する部分を前記１バイト文字列に変換し、当該１バイト文字列を含む前記第２名称を生成することを特徴とする情報処理装置。
【請求項２】
前記名称変換手段は、前記１バイト文字列に変換された前記第２名称であることを特定可能な特定文字を含む前記第２名称を生成することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記判定手段は、前記第１名称の文字列コードを１バイトずつ解析し、解析対象の１バイトが１バイト文字に属さないコードであるか否かを判定し、１バイト文字に属さないコードである場合に複数バイト文字を含むと判定することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記判定手段は、前記第１名称の文字数がショートファイル名形式の最大文字数以下であるか否かを判定する文字数判定手段を更に備え、
前記名称変換手段は、前記第１名称の文字数が前記最大文字数以下でないと判定された場合は、前記第１名称が複数バイト文字を含むと判定されていなくても、当該第１名称を、前記１バイト文字列を含む前記第２名称に変換することを特徴とする請求項１乃至３のうちいずれか一項に記載の情報処理装置。
【請求項５】
前記判定手段は、前記第１名称が複数バイト文字を含むと判定した場合であっても、当該第１名称が１バイト文字列で表現可能であるか否かを判定する文字判定手段を有し、前記名称変換手段は、前記第１名称が１バイト文字列で表現可能と判定された場合、当該第１名称に含まれる複数バイトの文字を１バイト文字に変換して、当該第１名称と同一文字列の１バイト文字列で表された前記第２名称を生成することを特徴とする請求項１乃至４のうちいずれか一項に記載の情報処理装置。
【請求項６】
前記判定手段は、前記第１名称の文字数がショートファイル名形式の最大文字数以下であるか否かを判定する文字数判定手段を備え、
前記名称変換手段は、前記第１名称が１バイト文字列で表現可能と判定され、かつ前記第１名称の文字数が前記最大文字数以下であると判定された場合に、当該第１名称を同一文字列の１バイト文字列に変換することを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記名称変換手段は、前記アプリケーション部から前記一意な所在位置情報を表す１バイト文字列を含む前記第２名称でアクセス位置を指定したアクセス要求を受け付けると、前記第２名称の１バイト文字列を前記所在位置情報に逆変換する逆変換部を備え、
前記記憶媒体に対して前記逆変換部による逆変換で取得した前記所在位置情報で示される所在位置にアクセスして前記データ特定情報を取得し、当該データ特定情報に基づきデータを取得することを特徴とする請求項１乃至６のうちいずれか一項に記載の情報処理装置。
【請求項８】
記憶媒体を接続可能な電子機器であって、
請求項１乃至７のうちいずれか一項に記載の情報処理装置と、
前記情報処理装置に記憶媒体からの前記データ特定情報の取得を要求するアプリケーション部と、
を備えたことを特徴とする電子機器。
【請求項９】
アプリケーション部からの要求に応じて電子機器に接続された記憶媒体にアクセスして取得したデータ特定情報を前記アプリケーション部に渡す処理をコンピューターに実行させるためのプログラムであって、
コンピューターに、
前記記憶媒体にアクセスして取得したデータ特定情報に含まれる第１名称が複数バイト文字を含むか否かを判定する判定ステップと、
前記第１名称が複数バイト文字を含むと判定された場合に、前記第１名称を１バイト文字列の第２名称に変換する名称変換ステップと、を実行させ、
前記名称変換ステップでは、前記記憶媒体における前記データ特定情報の所在位置を示す一意な所在位置情報のうち前記第１名称に対応する部分を前記１バイト文字列に変換し、当該１バイト文字列を含む前記第２名称を生成することを特徴とするプログラム。
【請求項１０】
アプリケーション部からの要求に応じて電子機器に接続された記憶媒体にアクセスして取得したデータ特定情報を前記アプリケーション部に渡す情報処理方法であって、
前記記憶媒体にアクセスして取得したデータ特定情報に含まれる第１名称が複数バイト文字を含むか否かを判定する判定ステップと、
前記第１名称が複数バイト文字を含むと判定された場合に、前記第１名称を１バイト文字列の第２名称に変換する名称変換ステップと、を備え、
前記名称変換ステップでは、前記記憶媒体における前記データ特定情報の所在位置を示す一意な所在位置情報のうち前記第１名称に対応する部分を前記１バイト文字列に変換し、当該１バイト文字列を含む前記第２名称を生成することを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーション部からの要求に応じて記憶媒体にアクセスするファイルシステムなどの情報処理装置、電子機器、プログラム及び情報処理方法に関する。
【背景技術】
【０００２】
例えば特許文献１には、メモリーカード等の記憶媒体にアクセスする機能を有するプリンター等の電子機器が開示されている。従来、この種の電子機器では、アプリケーション部はファイルシステムを介して記憶媒体にアクセスし、記憶媒体から読み込んだファイル情報やファイル等を使って、画像枚数のカウント、画像の表示、画像の印刷等の必要な各種処理を行う。ファイルシステムは複数種のＦＡＴ（File Allocation Table）を備え、記憶媒体のフォーマットに合った１つのＦＡＴを用いて記憶媒体にアクセスし、必要なファイル情報やファイルを取得する。
【０００３】
従来、ＦＡＴ１２、ＦＡＴ１６、ＦＡＴ３２に対応する形式でフォーマットされた記憶媒体に記憶されたファイル情報中のファイル名やディレクトリ名（フォルダー名）には、ＡＳＣＩＩコード等の１バイト文字コードで表現されたショートファイル名形式（例えば８．３形式）が採用されていた。このため、アプリケーション部はショートファイル名形式（例えば８．３形式）にしか対応しておらず、ファイルシステムに対してショートファイル名形式で表現されたアクセス先（例えばフルパスファイル名等のデータ特定情報）を指定してアクセス要求を出すことで、記憶媒体に対してリード（読込み）及びライト（書込み）を行っていた。
【０００４】
ここで、１バイト文字コードであるＡＳＣＩＩコードは、英数字等の限られた文字を符号化する１バイト系符号化文字コードであり、使用できるファイル名等はショートファイル名に限られる。これに対して、１バイト文字と２バイト文字の組合わせなど異なるバイト数の文字が混在するマルチバイト文字や、２バイト文字だけからなるなど同じバイト数の文字だけからなるワイド文字コードなどがある。マルチバイト文字の符号化方式の場合、ほとんどの場合、１バイト文字については、ＡＳＣＩＩあるいはISO 646をベースにしたものになる。例えば日本語ロケールであれば、一般的にシフトＪＩＳ（Shift JIS）やEUC-JPが採用され、UTF-8が用いられる場合もある。この場合、１バイト文字である英数字以外の日本語の文字、例えば漢字、全角平仮名、全角カタカナなどは２バイト文字となる。なお、ワイド文字集合の１つとして、例えばUnicode（ユニコード）が挙げられる。
【０００５】
例えば特許文献２には、ローカルコード列とユニコード列との間の変換を行うファイル管理モジュールが開示されている。このファイル管理モジュールは、記憶媒体内のファイル名のローカルコード列を、１バイトコードそれぞれに対していずれかのユニコードを重複なく割り当てた変換テーブルを用いて、ユニコード列に変換して提供する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−２１０４３３号公報
【特許文献２】特開２００９−１４００６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従来の電子機器のアプリケーション部は、ＡＳＣＩＩコードのショートファイル名を前提にリードとライトを行っている。そのため、アプリケーション部は、ＡＳＣＩＩコードで表現されたファイル名の文字列を１バイト（１文字分）ずつ解析し、ファイル名を解読している。
【０００８】
例えばシフトＪＩＳ等のマルチバイト文字の符号化方式や、ワイド文字の符号化方式の中には、２バイト文字の中に、１バイト文字の「\」を表す「5C」（16進数）を含むものがある。「5C」（16進数）が意味する『\』は、フルパスファイル名ではディレクトリの境界を意味する。
【０００９】
このため、従来の電子機器のアプリケーション部は、「5C」のコードが含まれる日本語の文字を使用したファイル名に対して、正しくファイル名を認識できず、ファイルアクセスができないという問題があった。つまり、ファイル名やディレクトリ名に、ディレクトリの境界を表す『\』の１バイト文字コードである「5C」をコード中に含む２バイト文字が存在すると、アプリケーション部はその箇所でディレクトリが区切られていると判断してしまい、正しいファイル名、ディレクトリ名を認識することができない。例えば電子機器がプリンターの場合、記憶媒体に保存されたファイルに基づく画像の表示も印刷もできなくなる。
【００１０】
特許文献２のファイル管理モジュールは、記憶媒体側のローカルコードをユニコードに変換する構成であるので、ユニコードに対応していないアプリケーション部はやはりファイル名を認識することができない。このため、電子機器に特許文献２のファイル管理モジュールを設けても、記憶媒体に正しくアクセスできない。また、ＡＳＣＩＩコード等の１バイト文字コードからなるローカルコードであれば、変換テーブルのデータサイズも比較的小さく済むが、複数バイト文字からなるローカルコードに対応する変換テーブルはデータサイズがかなり大きくなり、メモリー容量の比較的小さなプリンター等の電子機器で使用するうえで現実的ではない。
【００１１】
本発明は、上記課題に鑑みてなされたものであり、その目的の一つは、複数バイト文字を含む名称が付けられていても、複数バイト文字のコードの一部を、ディレクトリの境界を表すコードであると誤認識することがない情報処理装置、電子機器、プログラム及び情報処理方法を提供することにある。
【課題を解決するための手段】
【００１２】
上記目的の一つを達成するために、本発明の態様の一つは、記憶媒体を接続可能な電子機器内に設けられ、当該電子機器内のアプリケーション部からの要求に応じて接続中の記憶媒体にアクセスして取得したデータ特定情報を前記アプリケーション部に渡す情報処理装置であって、前記データ特定情報に含まれる第１名称が複数バイト文字を含むか否かを判定する判定手段と、前記第１名称が複数バイト文字を含むと判定された場合に、前記第１名称を１バイト文字列の第２名称に変換する名称変換手段と、を備え、前記名称変換手段は、前記記憶媒体における前記データ特定情報の所在位置を示す一意な所在位置情報のうち前記第１名称に対応する部分を前記１バイト文字列に変換し、当該１バイト文字列を含む前記第２名称を生成することを要旨とする。なお、所在位置情報のうち第１名称と対応する部分が所在位置情報の全部である場合は、所在位置情報を変換した１バイト文字列を含む第２名称を生成することになる。
【００１３】
本発明の一実施態様によれば、記憶媒体にアクセスして取得したデータ特定情報に含まれる第１名称の文字列が複数バイト文字を含むと判定された場合、名称変換手段によって、第１名称の文字列は１バイト文字列の第２名称に変換される。このとき、データ特定情報の所在位置を示す一意な所在位置情報のうち第１名称に対応する部分を１バイト文字列に変換し、この１バイト文字列を含む第２名称が生成される。よって、複数バイト文字を含む符号化方式を扱う形式でフォーマットされた記憶媒体にアクセスしても、複数バイト文字の一部をディレクトリの境界を表すコードであると誤認識することがない。
【００１４】
本発明の態様の一つである情報処理装置では、前記１バイト文字列に変換された前記第２名称であることを特定可能な特定文字を含む前記第２名称を生成することが好ましい。
本発明の一実施態様によれば、名称変換手段が生成した第２名称には、一意な所在位置情報のうち第１名称に対応する部分を変換した１バイト文字列と、１バイト文字列に変換された第２名称であることを特定可能な特定文字とが含まれる。このため、例えばアプリケーション部から第２名称でアクセス位置を指定したアクセス要求を受け付けた場合、第２名称に対して特定文字の有無を調べ、特定文字があれば第２名称のうち特定文字以外の１バイト文字列からデータ特定情報のうち第１名称と対応する部分を取得することが可能になる。例えば、データ特定情報が階層構造で表されている場合、階層毎の第２名称からデータ特定情報のうち第１名称と対応する部分を階層毎に取得することにより、所在位置情報が得られる。そして、所在位置情報から取得されるデータ特定情報に基づき、要求されたデータを取得してアプリケーション部に渡すことが可能になる。
【００１５】
本発明の態様の一つである情報処理装置では、前記判定手段は、前記第１名称の文字列コードを１バイトずつ解析し、解析対象の１バイトが１バイト文字に属さないコードであるか否かを判定し、１バイト文字に属さないコードである場合に複数バイト文字を含むと判定することが好ましい。
【００１６】
本発明の一実施態様によれば、判定手段は、第１名称の文字列を１バイトずつ解析し、解析対象の１バイトが１バイト文字に属さないコードであれば、複数バイト文字を含むと判定する。このため、文字コード列を１バイトずつ解析しても、複数バイト文字を含むか否かを判定できる。
【００１７】
本発明の態様の一つである情報処理装置では、前記判定手段は、前記第１名称の文字数がショートファイル名形式の最大文字数以下であるか否かを判定する文字数判定手段を更に備え、前記名称変換手段は、前記第１名称の文字数が前記最大文字数以下でないと判定された場合は、前記第１名称が複数バイト文字を含むと判定されていなくても、当該第１名称を、前記１バイト文字列を含む前記第２名称に変換することが好ましい。
【００１８】
本発明の一実施態様によれば、名称変換手段は、第１名称の文字数が最大文字数以下でないと判定された場合は、第１名称が複数バイト文字を含むと判定されていなくても、第１名称を、一意な所在位置情報のうち第１名称と対応する部分を変換した１バイト文字列を含む第２名称に変換する。よって、ショートファイル名形式の最大文字数を超えるロングファイル名形式の第１名称を、その文字列の最後まで解析する無駄を極力回避しつつ、１バイト文字列の第２名称に変換できる。
【００１９】
本発明の態様の一つである情報処理装置では、前記判定手段は、前記第１名称が複数バイト文字を含むと判定した場合であっても、当該第１名称が１バイト文字列で表現可能であるか否かを判定する文字判定手段を有し、前記名称変換手段は、前記第１名称が１バイト文字列で表現可能と判定された場合、当該第１名称に含まれる複数バイトの文字を１バイト文字に変換して、当該第１名称と同一文字列の１バイト文字列で表された前記第２名称を生成することが好ましい。
【００２０】
本発明の一実施態様によれば、第１名称が複数バイト文字を含む場合であっても、当該第１名称が１バイト文字列で表現可能な場合は、名称変換手段により、当該第１名称に含まれる複数バイトの文字が１バイト文字に変換されることにより、第１名称の文字列をそのまま使った１バイト文字列の第２名称に変換される。よって、このような第１名称については、記憶媒体から一意な所在位置情報を取得する処理などを省略できる。
【００２１】
本発明の態様の一つである情報処理装置では、前記判定手段は、前記第１名称の文字数がショートファイル名形式の最大文字数以下であるか否かを判定する文字数判定手段を備え、前記名称変換手段は、前記第１名称の文字列が１バイト文字列で表現可能と判定され、かつ前記第１名称の文字数が前記最大文字数以下であると判定された場合に、当該第１名称を同一文字列の１バイト文字列に変換することが好ましい。
【００２２】
本発明の一実施態様によれば、第１名称が１バイト文字列で表現可能と判定され、かつ第１名称の文字数が前記最大文字数以下であると判定された場合は、第１名称の文字列をそのまま使った１バイト文字列のショートファイル名に変換されて第２名称とされる。よって、このような第１名称の同一文字列のショートファイル名形式への変換の際は、記憶媒体から所在位置情報を取得する処理などを省略できる。
【００２３】
本発明の態様の一つである情報処理装置では、前記名称変換手段は、前記アプリケーション部から前記一意な所在位置情報を表す１バイト文字列を含む前記第２名称でアクセス位置を指定したアクセス要求を受け付けると、前記第２名称の１バイト文字列を前記所在位置情報に逆変換する逆変換部を備え、前記記憶媒体に対して前記逆変換部による逆変換で取得した前記所在位置情報で示される所在位置にアクセスして前記データ特定情報を取得し、当該データ特定情報に基づきデータを取得することが好ましい。
【００２４】
本発明の一実施態様によれば、アプリケーション部から一意な所在位置情報を表す１バイト文字列を含む第２名称でアクセス位置を指定したアクセス要求を受け付けた場合、第２名称の１バイト文字列を逆変換して所在位置情報を取得し、記憶媒体に対しその所在位置情報で示された所在位置にアクセスすればデータ特定情報を取得できる。そして、データ特定情報に基づくアクセス位置から、要求されたデータを取得できる。従って、第１名称を第２名称に変換したデータ特定情報をアプリケーション部に渡した後、アプリケーション部から第２名称でアクセス位置を指定したアクセス要求を受け付けても、その要求されたデータを記憶媒体から取得してアプリケーション部に渡すことができる。
【００２５】
本発明の態様の一つは、記憶媒体を接続可能な電子機器であって、上記発明の一態様に係る情報処理装置と、前記情報処理装置に記憶媒体からのデータ特定情報の取得を要求するアプリケーション部と、を備えたことを要旨とする。本発明の一実施態様によれば、電子機器によって、上記情報処理装置の発明と同様の効果を得ることができる。
【００２６】
本発明の態様の一つは、アプリケーション部からの要求に応じて電子機器に接続された記憶媒体にアクセスして取得したデータ特定情報を前記アプリケーション部に渡す処理をコンピューターに実行させるためのプログラムであって、コンピューターに、前記記憶媒体にアクセスして取得したデータ特定情報に含まれる第１名称が複数バイト文字を含むか否かを判定する判定ステップと、前記第１名称が複数バイト文字を含むと判定された場合に、前記第１名称を１バイト文字列の第２名称に変換する名称変換ステップと、を実行させ、前記名称変換ステップでは、前記記憶媒体における前記データ特定情報の所在位置を示す一意な所在位置情報のうち前記第１名称に対応する部分を前記１バイト文字列に変換し、当該１バイト文字列を含む前記第２名称を生成することを要旨とする。本発明の一実施態様によれば、コンピューターにプログラムを実行させることにより、上記情報処理装置の発明と同様の作用効果を得ることができる。
【００２７】
本発明の態様の一つは、アプリケーション部からの要求に応じて電子機器に接続された記憶媒体にアクセスして取得したデータ特定情報を前記アプリケーション部に渡す情報処理方法であって、前記記憶媒体にアクセスして取得したデータ特定情報に含まれる第１名称が複数バイト文字を含むか否かを判定する判定ステップと、前記第１名称が複数バイト文字を含むと判定された場合に、前記第１名称を１バイト文字列の第２名称に変換する名称変換ステップと、を備え、前記名称変換ステップでは、前記記憶媒体における前記データ特定情報の所在位置を示す一意な所在位置情報のうち第１名称に対応する部分を前記１バイト文字列に変換し、当該１バイト文字列を含む前記第２名称を生成する。この発明によれば、上記情報処理装置の発明と同様の作用効果を得ることができる。
【図面の簡単な説明】
【００２８】
【図１】一実施形態における複合機の斜視図。
【図２】複合機の電気的構成を示すブロック図。
【図３】アプリケーション部及びファイルシステムの機能構成を示すブロック図。
【図４】ディレクトリエントリー配列を示すブロック図。
【図５】変換後のファイル特定名称のデータ構造を示す模式図。
【図６】（ａ），（ｂ）ファイル特定名称の変換処理を説明する模式図。
【図７】アプリケーション処理を示すフローチャート。
【図８】ファイルシステム処理を示すフローチャート。
【図９】ファイル特定名称変換処理を示すフローチャート。
【図１０】ファイルアクセス処理を示すフローチャート。
【発明を実施するための形態】
【００２９】
以下、本発明を具体化した一実施形態を図１〜図１０に基づいて説明する。図１に示す電子機器の一例としての複合機１１は、本体１２とカバー１３とを備える。本体１２の下側部分がプリンター部１４になっており、上側部分がスキャナー部１５になっている。プリンター部１４は、例えばインクジェット式の記録方式を採用する。本体１２の前側上段部には、操作パネル１７が設けられている。また、本体１２の前側下部には、印刷済みの用紙Ｐが排出される排紙部１８が設けられている。本体１２において排紙部１８の図１における右上位置には、記憶媒体の一例であるメモリーカード１９を挿抜可能なカードスロット２０が設けられている。
【００３０】
図１に示すように、操作パネル１７には、その幅方向中央部に配置された表示部２１と、電源ボタン２２、モード選択ボタン２３、印刷／スキャンを開始するスタートボタン２４、選択ボタン２５等を含む操作部２６とが設けられている。
【００３１】
本実施形態の複合機１１では、モード選択ボタン２３の操作によって、「メモリーカード」「コピー」「スキャン」等を含む複数のモードのうち一つを選択できる。表示部２１には選択されたモードに対応するメニュー画面が表示され、選択ボタン２５等の操作により所望の印刷条件等の設定が可能になっている。ここで、「メモリーカード」モードは、カードスロット２０に挿着されたメモリーカード１９から読み取った画像データに基づき写真等の画像を印刷するときに用いられる。
【００３２】
次に、複合機１１の電気的構成を図２を用いて説明する。複合機１１は、コンピューター３１（例えばマイクロコンピューター）を備える。コンピューター３１は、メモリーカードＩ／Ｆ３２を介して接続されたメモリーカード１９にアクセスする。また、コンピューター３１には、操作パネル１７の操作部２６と表示部２１が接続されている。さらにコンピューター３１は、スキャナー部１５にスキャニング動作を行わせるスキャンエンジン３３と、プリンター部１４に印刷動作を行わせるプリントエンジン３４とに接続されている。
【００３３】
コンピューター３１は、ＣＰＵ３５、ＡＳＩＣ３６（Application SpecificＩＣ）、ＲＯＭ３７、ＲＡＭ３８等を内蔵している。ＲＯＭ３７には、アプリケーション用プログラム（例えば図７）や、ファイルシステム用プログラム（例えば図８〜図１０）、各種処理に必要な設定データなどが記憶されている。ＣＰＵ３５はＲＯＭ３７から読み出したプログラム（例えばアプリケーション用プログラム）を実行して各種の処理を行う。コンピューター３１は、検出したメモリーカード１９にアクセスしてファイル情報ＦＩ（図３参照）を読み込んで登録する処理や、ファイル情報に基づいてメモリーカード１９内のファイルＦ（画像データ）を読み込む処理や、画像データに基づく画像の表示部２１への表示処理及び印刷処理などを実行する。
【００３４】
図３は、コンピューターにおいて、メモリーカードからファイル情報やファイルを読み込む処理を行う部分の機能構成を示す。なお、図３ではメモリーカードＩ／Ｆ３２は省略されている。コンピューター３１は、ＣＰＵ３５がアプリケーション用プログラムを実行することで構築されるアプリケーション部４１と、ＣＰＵ３５がファイルシステム用プログラムを実行することで構築されるファイルシステム４２とを備える。
【００３５】
アプリケーション部４１は、カードスロット２０に挿着されたメモリーカード１９を検出したとき、表示部２１にメモリーカード１９中の画像を表示するとき、あるいは印刷対象のファイルＦ（画像データ）をメモリーカード１９から取得するときには、ファイルシステム４２を介してメモリーカード１９にアクセスする。すなわち、アプリケーション部４１がファイルシステム４２にアクセス要求を出すと、ファイルシステム４２はメモリーカード１９にアクセスしてその要求されたファイル情報ＦＩやファイルＦ（画像データ）を読み込み、その読み込んだファイル情報ＦＩ等をアプリケーション部４１へ送る。
【００３６】
アプリケーション部４１は、カウントアップ処理部４３、ファイル情報登録部４４及びファイル要求部４５を備える。また、ファイルシステム４２は、複数種のＦＡＴ５１〜５４等（ファイル・アロケーション・テーブル（File Allocation Table））と、ファイル名変換部６０とを備えている。本例では、複数種のＦＡＴ５１〜５４等として、「ＦＡＴ１２」、「ＦＡＴ１６」、「ＦＡＴ３２」及び「ｅｘＦＡＴ」などを備えている。
【００３７】
ファイル名変換部６０は、ファイル名やディレクトリ名などのファイル特定名称を、マルチバイト文字コードのロングファイル名から１バイト（シングルバイト）文字コードのショートファイル名に変換する文字コード変換処理を行う。この文字コード変換処理を行うために、ファイル名変換部６０は、図３に示すように、フォーマット形式判定部６１、カウンター６２、文字判定手段の一例である名称構成判定部６３、文字数判定手段の一例である文字数判定部６４、第１変換部６５、逆変換部の一例である第２変換部６６及びパス解析部６７を備えている。
【００３８】
本実施形態では、１バイト文字集合とマルチバイト文字集合とワイド文字集合とを次のように定義する。１バイト文字集合（シングルバイト文字集合）とは、１文字を１バイトで表現する文字集合であり、ＡＳＣＩＩとISO646を挙げることができる。１バイトの符号化方式としては、ＡＳＣＩＩとISO646が使用される。
【００３９】
マルチバイト文字集合とは、１バイト文字集合（ＡＳＣＩＩ、ISO646）と、この1バイト文字集合の中に存在しない文字（例えば漢字）を複数バイト（例えば２バイト）で表現した複数バイト文字集合（例えば２バイト文字集合）とからなる文字集合である。マルチバイト文字の符号化方式としては、シフトＪＩＳとＵＴＦ−８などが使用される。例えばシフトＪＩＳでは、複数バイト文字集合の中の複数バイト文字を複数バイトで表したときの１バイト分が、ＡＳＣＩＩやISO 646など符号化方式における文字『\』を表す「5C」が使われている。日本では『\』が使われるが、他国ではバックスラッシュを表す。『\』又はバックスラッシュは、ディレクトリの境界を示す文字として使用される。
【００４０】
ワイド文字集合とは、１文字を複数バイトで表現する文字集合である。ＡＳＣＩＩやISO646などの１バイト文字集合で表現可能な文字も複数バイトで表現される。一例としてユニコード（Unicode）を挙げることができる。ワイド文字の符号化方式としては、ＵＴＦ−１６やＵＴＦ−３２が使われる。
【００４１】
本実施形態では、マルチバイト文字集合やワイド文字集合のように複数バイト文字を含む文字集合の文字コードで表現された変換前のファイル特定名称が、第１名称に相当する。また、１バイト文字集合の文字コードで表現された変換後のファイル特定名称が、第２名称に相当する。また、フォーマット形式判定部６１、名称構成判定部６３及び文字数判定部６４により、判定手段の一例が構成される。さらに第１変換部６５及び第２変換部６６により、名称変換手段の一例が構成される。
【００４２】
カウントアップ処理部４３は、複合機１１に接続（つまりカードスロット２０に挿入）されているメモリーカード１９を検出すると、メモリーカード１９中の画像枚数（ファイル数）をカウントアップする。このとき、カウントアップ処理部４３はファイルシステム４２に対してファイル検索を要求する（図中（1））。ファイルシステム４２はファイル検索要求を受け付けると、メモリーカード１９にアクセスしてディレクトリエントリーを取得する（図中（2））。そして、ファイルシステム４２はディレクトリエントリー中のファイル情報ＦＩをアプリケーション部４１へ送る（図中（3））。このファイル情報ＦＩには、「ファイル名」、「拡張子」、「フルパスファイル名」、「作成日付」、「作成時刻」などファイルＦに関する各種情報が含まれている。なお、本実施形態では、ファイル名及びフルパスファイル名が、データ特定情報の一例に相当する。
【００４３】
ファイル情報登録部４４は、ファイルシステム４２から受け取ったファイル情報ＦＩを、ＲＡＭ３８に作成したファイルリストＦＬに登録する（図中（4））。このとき、ファイル情報登録部４４は、ファイル情報ＦＩ中のファイル名から複合機１１が印刷の対象とすることができる印刷対応のファイルであるか否かを判断し、印刷非対応のファイルのファイル情報は除去するので、ファイルリストＦＬには印刷可能なファイルのファイル情報ＦＩだけが登録される。カウントアップ処理部４３は、ファイル情報登録部４４がファイル情報を１つ登録する度に「１」ずつカウントアップし、ファイル情報の登録数、すなわちメモリーカード１９中で印刷可能な画像枚数をカウントする。こうしてＲＡＭ３８の所定記憶領域には、メモリーカード１９中のファイル情報ＦＩが登録されたファイルリストＦＬが作成される。
【００４４】
また、ファイル要求部４５は、メモリーカード１９内からファイルを取得する必要が生じた場合、その必要なファイルに係るファイル情報をファイルリストＦＬから読み出す（図中（5））。そして、ファイル要求部４５は、読み出したファイルリストＦＬ中のフルパスファイル名を指定してファイルシステム４２に対してファイル読込要求を行う（図中（6））。
【００４５】
ファイルシステム４２は、ファイル読込要求を受け付けると、フルパスファイル名を手掛かりにメモリーカード１９内における指定のファイルにアクセスする（図中（7））。そして、ファイルシステム４２は、メモリーカード１９からファイルＦを読み込み、読み込んだファイルＦを要求元のアプリケーション部４１へ送る（図中（8））。
【００４６】
本実施形態の複合機１１におけるアプリケーション部４１は、１バイト文字の一例としてのＡＳＣＩＩコードの文字符号化方式であるショートファイル名形式（「８．３形式」）に対応している。しかし、アプリケーション部４１は、シフトＪＩＳなどの文字符号化方式や、ユニコード（Unicode）の文字符号化方式の一例である「ＵＴＦ−１６（UCS/Unicode Transformation Format 16）」で扱われるロングファイル名形式には対応していない。しかし、ユニコードで表現されるロングファイル名形式でフォーマットされたメモリーカード１９が、カードスロット２０に挿入される場合もある。このため、図３に示すように、ファイルシステム４２が備える複数種のＦＡＴ５１〜５４等の中には、ＡＳＣＩＩコードで表現されるショートファイル名形式に対応する「ＦＡＴ１２」、「ＦＡＴ１６」、「ＦＡＴ３２」の他、ユニコード（ＵＴＦ−１６）で表現されるロングファイル名形式でフォーマットされたメモリーカード１９に対応可能な「ｅｘＦＡＴ」が追加されている。
【００４７】
「ＦＡＴ１６」、「ＦＡＴ３２」では、日本語文字コードの文字符号化方式として例えばシフトＪＩＳが採用される。また、「ｅｘＦＡＴ」では、ユニコード（ＵＴＦ−１６）が日本語にも対応しているため、日本語の文字についてもユニコードの文字符号化方式が使用される。
【００４８】
ここで、ロングファイル名では、１文字が２バイトだけで表現されるユニコード（ＵＴＦ−１６）が使用され、最大２５５文字までのファイル名を設定できる。一方、ショートファイル名形式（８．３形式）では、１文字が１バイトで表現される１バイト系文字コードであるＡＳＣＩＩコードが使用され、ファイル名が８文字以下かつ拡張子が３文字以下の文字数に限られる。シフトＪＩＳにおける日本語の文字は２バイト文字なので、ショートファイル名形式（８．３形式）では、２バイト文字の１文字は、２文字として扱われる。また、「ユニコード」では、英数字は上位１バイトに「００」（16進数）が付き、下位１バイトはその文字の「ＡＳＣＩＩコード」と同じ値をとる。なお、「ＡＳＣＩＩコード」では「００」（16進数）は終端文字を表す。
【００４９】
本実施形態のアプリケーション部４１は、ショートファイル名形式（８．３形式）にしか対応していない。アプリケーション部４１は、ＦＡＴ５４（「ｅｘＦＡＴ」）を介してユニコード（ＵＴＦ−１６）のファイル情報ＦＩを取得しても、そのままでは解読することができない。また、ファイルシステム４２のＦＡＴ５２，５３（「ＦＡＴ１６」「ＦＡＴ３２」）は、日本語の文字（漢字、片仮名、平仮名）を含むファイル情報ＦＩに対応できるように、ファイル情報ＦＩをシフトＪＩＳの文字コードで表現する。この日本語の文字（漢字、片仮名、平仮名）は、シフトＪＩＳでは２バイト文字である。
【００５０】
アプリケーション部４１は、ショートファイル名形式かロングファイル名形式かの違いによらず、また１バイト文字か複数バイト文字であるかによらず、ファイル名やディレクトリ名等のファイル特定名称の文字コード列を、１バイトずつ解析する。例えばシフトＪＩＳの２バイト文字を表す文字コードの中には、例えばＡＳＣＩＩコードで「\」を意味する「5C」（16進数）を含む文字コードがある。アプリケーション部４１は、ファイル特定名称の文字コード列を、１バイトずつ解析し、「\」を意味する「5C」（１６進数）があると、ディレクトリの境界であると間違って解読する。本実施形態では、このように複数バイト文字のうちその文字コード（２バイトコード）中に「\」を意味する「5C」を含む文字の解析中に、２バイト文字コード中の１バイトを「\」を意味する「5C」と間違って解読することを回避するため、ファイルシステム４２にはファイル名変換部６０が設けられている。
【００５１】
なお、シフトＪＩＳにおいて「5C」（16進数）を含む２バイト文字の一例を挙げると、[―](815C)、[ソ](835C)、[Ы](845C)、[IX](875C)、[噂](895C)、[欺](8B5C)、[圭](8C5C)、[構](8D5C)、[蚕](8E5C)、[十](8F5C)、[申](905C)、 [貼](935C)、[能](945C)、[表](955C)、[暴](965C)、[予](975C)、[禄](985C)、[臀](E45C)、[饅](E95C)などがある。これらの文字コードから分かるように、どの文字も、１バイト目はＡＳＣＩＩコードで未使用の「0x80」〜「0xFF」の範囲内にあり、２バイト目が「0x5C」になっている。
【００５２】
本実施形態では、図３に示すファイル名変換部６０が、ファイル情報ＦＩに含まれるファイル特定名称を、１バイト文字（ＡＳＣＩＩ形式）の名称に変換する。本例では、ファイル情報ＦＩのうち「フルパスファイル名」と「ファイル名」が、ファイル名変換部６０の変換処理対象とされる。そして、「フルパスファイル名」の場合は、階層別の構成要素である「ディレクトリ名（サブディレクトリ名も含む）」と「ファイル名」などがファイル特定名称となる。
【００５３】
次にファイル名変換部６０を構成する各部６１〜６７の詳細を説明する。
フォーマット形式判定部６１は、所定の形式でフォーマットされたメモリーカード１９のフォーマット形式を判定する。
【００５４】
ファイルシステム４２は、複数のＦＡＴ５１〜５４等のうちから、フォーマット形式判定部６１により判定されたフォーマット形式に対応する１つのＦＡＴを介してメモリーカード１９にアクセスする。また、フォーマット形式判定部６１は、判定したフォーマット形式によって、変換前のファイル特定名称（第１名称）に適用される文字符号化方式が、日本語文字に対応するマルチバイト文字のローカルコードであるシフトＪＩＳか、ユニコードに対応するＵＴＦ−１６の文字符号化方式であるかを判定する。
【００５５】
ファイル特定名称が複数バイト文字を含む文字列で表現されている場合、各部６２〜６５が複数バイト文字を含む文字列を１バイト文字（ＡＳＣＩＩコード）の文字列へ変換する変換処理を行う。この変換処理では、複数バイト文字を含む文字列からなる「ファイル特定名称」の文字列構造から１バイト文字コード（ＡＳＣＩＩコード）に変換できるかどうかを解析し、その解析結果に応じた変換処理を行う。具体的には、ショートファイル名形式で使用可能な最大文字数以下（本例では８文字以下）であるかどうか、「ＡＳＣＩＩコード」に変換可能な文字（本例では英数字）のみからなる文字列であるかどうかなどを解析する。この解析処理は、「ファイル特定名称」の文字列を構成する文字を先頭から１文字（１バイト）ずつ順番に解析する。ファイル名変換部６０はこの解析を、カウンター６２、名称構成判定部６３、文字数判定部６４を用いて行う。そして、第１変換部６５は、予め用意された２種類の変換方式のうち解析結果に応じて選択した１つの変換方法で、「ファイル特定名称」を、１バイト文字コード（ＡＳＣＩＩコード）で表現されたショートファイル名形式に変換する。
【００５６】
より具体的には、カウンター６２は、解析対象の文字が先頭から何番目（何文字目）であるかを計数する。名称構成判定部６３は、メモリーカード１９のフォーマット形式から「ＦＡＴ１２」を使用する場合は「ＡＳＣＩＩ」が適用され、「ＦＡＴ１６」「ＦＡＴ３２」を使用する場合は「シフトＪＩＳ」が適用され、「ｅｘＦＡＴ」を使用する場合は「ユニコード（ＵＴＦ−１６）」が適用されると判断する。名称構成判定部６３は、ユニコード（ＵＴＦ−１６）が適用される場合、ファイル特定名称の文字列が全て複数バイト文字であると判定する。
【００５７】
また、名称構成判定部６３は、シフトＪＩＳが適用される場合、ファイル特定名称が１バイト文字だけからなるのか、複数バイト文字（例えば２バイト）を含むのかを判定する。ここで、シフトＪＩＳの場合、英数字は１バイト文字であり、しかもその１バイト文字のコードはＡＳＣＩＩコードと同じ値である。また、シフトＪＩＳでは、２バイト文字のうち上位１バイトにＡＳＣＩＩコードと同じ値が使用されていない。このため、名称構成判定部６３は、ファイル特定名称の文字列を構成する文字が英数字などのＡＳＣＩＩコードと同じコードで表現される１バイト文字であるか否かを、１文字（１バイト）ずつ順番に判定する。
【００５８】
また、名称構成判定部６３は、複数バイト文字（例えば２バイト文字）であっても、ユニコードである場合は、ＡＳＣＩＩコードで表現可能な特定の文字であるか否かを判定する。ユニコード（ＵＴＦ−１６）では、英数字は、１文字で使用される２バイトのうち、上位１バイト（第１バイト目）が「００」（16進数）、下位バイト（第２バイト目）がその英数字のＡＳＣＩＩコードと同じ値をとる。このため、名称構成判定部６３は、先頭から１文字ずつ順番に判定する際に、１文字を表す２バイトのうち上位バイトが「００」（16進数）であるか否かを判定する。これにより、複数バイト文字がユニコードである場合に、その文字が、下位１バイトがＡＳＣＩＩコードと値が同じになる英数字であるか否かを判定する。
【００５９】
また、文字数判定部６４は、ファイル特定名称の文字数がショートファイル名形式の最大文字数の「８文字」を超えるか否かを判定する。ショートファイル名に変換できるためには、文字数が８文字（８バイト）以下である必要がある。このため、文字数判定部６４は、「ファイル特定名称」の文字列の先頭から１文字ずつ計数するカウンター６２の計数値で示される文字数が、８文字以下であるか否かを判定する。文字列を先頭から１文字ずつ順番に解析（判定）していって次の文字がなかった場合にその直前の文字までの計数値が８以下であれば、「ファイル特定名称」が８文字以下であると判定できる。このとき、文字数判定部６４は、ファイル特定名称が「ファイル名」である場合、名称と拡張子の間のドット「．」を終端文字とし、次の文字が終端文字「．」があった場合はその文字がないと判定する。
【００６０】
第１変換部６５は、名称構成判定部６３及び文字数判定部６４による解析結果（判定結果）に応じた変換方法に従って、「ファイル特定名称」を、複数バイト文字を含む文字列のショートファイル名形式又はロングファイル名形式から、１バイト文字コードのショートファイル名形式に変換する。すなわち、第１変換部６５は、名称構成判定部６３が、ファイル特定名称の文字コード列中に複数バイト文字が含まれていると判定した場合、ファイル特定名称（第１名称）の文字列を、そのファイル特定名称の所在位置情報（本例では数字）を１バイト文字コード列（ＡＳＣＩＩコード列）で表現したファイル特定名称（第２名称）に変換する。この１バイト文字コード列で表現されたファイル特定名称（第２名称）への変換により、値に「5C」を含む複数バイト文字を含むファイル特定名称をアプリケーション部４１に渡すことを回避する。
【００６１】
但し、複数バイト文字がユニコードである場合、名称構成判定部６３は、その複数バイト文字の対象文字の上位１バイトが「００」（16進数）であるか否かを判定し、上位１バイトが「００」（16進数）であると判定した場合、その複数バイト文字がユニコードの英数字であることになる。この場合、第１変換部６５は、複数バイト文字コード中の１バイト目の「００」（16進数）を削除し、その文字をＡＳＣＩＩコードで表現したときの文字コードと同じ値の２バイト目を残して１バイト文字（ＡＳＣＩＩコードの英数字）とする。
【００６２】
また、文字数判定部６４が、ファイル特定名称の文字数がショートファイル名形式の最大文字数の「８文字」を超えると判定した場合、第１変換部６５は、ファイル特定名称の文字列を、その所在位置情報を１バイト文字コード列（ＡＳＣＩＩコード列）で表現したファイル特定名称（第２名称）に変換する。
【００６３】
ここで、本実施形態では、所在位置情報として、フルパスファイル名から特定されるディレクトリエントリー配列のインデックスＩ（図４に示す）を使用する。フルパスファイル名は、ディレクトリ名（フォルダー名）、ファイル名などの階層構造で表されている。第１変換部６５は、これらディレクトリ名、ファイル名などのファイル特定名称（第１名称）を、それぞれの所在位置を示すディレクトリエントリー配列のインデックスＩをＡＳＣＩＩコードで表現したファイル特定名称（第２名称）へ変換する変換処理を行う。なお、以下の説明では、このファイル特定名称（第２名称）を「特別ファイル名」と呼ぶ。
【００６４】
また、アプリケーション部４１がメモリーカード１９からファイルＦを読み込むときは、ファイル要求部４５がファイルシステム４２にファイル読込要求を行う。このとき、ファイル要求部４５は、読み出すべきファイルＦに対応するファイル情報ＦＩをファイルリストＦＬから読み出し、ファイル情報ＦＩに含まれるフルパスファイル名を指定してファイル読込要求を行う。このフルパスファイル名が、特別ファイル名を含むものである場合、このままのフルパスファイル名を指定しても、「ＦＡＴ１６」、「ＦＡＴ３２」、「ｅｘＦＡＴ」形式にフォーマットされたメモリーカード１９中のファイルにアクセスできない。
【００６５】
そのため、ファイル名変換部６０は、特別ファイル名を含むフルパスファイル名を、元のディレクトリエントリー配列のインデックスＩ（所在位置情報）に逆変換する第２変換部６６を備えている。第２変換部６６は、フルパスファイル名中の特別ファイル名（第２名称）を、ディレクトリエントリー配列のインデックスＩを表すシフトＪＩＳ又はユニコード（ＵＴＦ−１６）の文字コードへ逆変換する。さらにファイル名変換部６０は、第２変換部６６が逆変換した値（ディレクトリエントリー配列のインデックスＩ）から、クラスター位置情報を取得するパス解析部６７を備えている。なお、これら第２変換部６６及びパス解析部６７による処理については後述する。
【００６６】
図４は、メモリーカードにおけるディレクトリ構造を示す。ｒｏｏｔ（ルート）直下の第１階層のディレクトリエントリー配列は、ファイル及びディレクトリのうち少なくとも一方に関する情報を含むディレクトリエントリーＤＥが１つ以上配列された配列構造をとる。各ディレクトリエントリーＤＥには配列位置を示すインデックス［０］〜［ｎ］が付されている。例えばインデックス［０］のディレクトリエントリーＤＥには、ファイル「Ａ．ＪＰＧ」に関するディレクトリエントリー構造体ＤＣが格納されている。このディレクトリエントリー構造体ＤＣ中には、ファイル名（サブディレクトリ名）、ファイル情報ＦＩ、ファイル（サブディレクトリ）本体のクラスター位置を示すクラスター位置情報ＣＰが格納されている。このファイル本体のクラスター位置とは、メモリーカード１９においてファイル本体がクラスターデータとして格納されている格納位置（クラスター番号）に相当する。
【００６７】
また、図４において、ディレクトリエントリー配列におけるインデックス［２］のディレクトリ「い」は、第２階層のサブディレクトリのディレクトリエントリー配列を有する。第２階層のディレクトリエントリー配列も、ファイル及びディレクトリのうち少なくとも一方に関する情報を含むディレクトリエントリーＤＥが１つ以上配列された配列構造をとる。第２階層も同様に各ディレクトリエントリーＤＥには配列位置を示すインデックス［０］〜［ｍ］が付されている。以下、第３階層以上がある場合も、同様に階層毎にディレクトリエントリー配列を有している。
【００６８】
第２変換部６６は、フルパスファイル名を構成するファイル特定名称を、１バイト文字コードのショートファイル名形式（８．３形式）から、複数バイト文字を含む文字コードに逆変換する。本実施形態の第２変換部６６は、第１変換部６５による２種類の変換方式に対応する２種類の逆変換方式に対応している。この逆変換方式の詳細は後述する。
【００６９】
次に、ファイル特定名称をショートファイル名形式の特別ファイル名へ変換する方法について説明する。カウンター６２、名称構成判定部６３及び文字数判定部６４を用いて文字列構造解析を行った結果、ファイル特定名称が、１バイト文字列で表現されたショートファイル名でなく、また同じ文字列の１バイト文字列で表現されたショートファイル名への変換も不可能な場合、次の変換方法で１バイト文字列のショートファイル名に変換する。
【００７０】
図５は、１バイト文字列のショートファイル名形式に変換したファイル名の例を示す。文字をＡＳＣＩＩコードに変換できない場合は、後述する特別な変換方法で変換するため、図５に示すように、先頭に、特別な変換方法によるショートファイル名であることを示す識別コードとして「ＦＦ」（16進数）を置く。この識別コード「ＦＦ」は、ＡＳＣＩＩコードと共存しても識別できるように、ＡＳＣＩＩコードに現れない値（コード）を採用する。もちろん、識別コードは「ＦＦ」に限らず、ＡＳＣＩＩコードに現れなければ他の値でもよい。例えば「ＦＥ」（16進数）でもよい。
【００７１】
そして、図５に示すように、先頭の識別コード「ＦＦ」に、「７桁のＩＤ」をＡＳＣＩＩコードに変換したものを付加してファイル名とし、これにＡＳＣＩＩコードに変換した３文字の拡張子を付けて一意のショートファイル名を生成する。なお、ファイル特定名称が「ディレクトリ名」である場合は、先頭の識別コード「ＦＦ」に「７桁のＩＤ」をＡＳＣＩＩコードに変換したものを付加した８文字のディレクトリ名を生成する。
【００７２】
図６は、フルパスファイル名をショートファイル名形式に変換する変換例を示す説明図である。本実施形態では、７桁のＩＤとして、ディレクトリエントリー配列のインデックスＩを採用する。図４に示すディレクトリエントリー配列を参照しつつ、図６における変換例を説明する。まず、図６（ａ）に示すようにフルパスファイル名が「ファイル」の階層だけからなる「ｒｏｏｔ￥あ．ＪＰＧ」の場合を説明する。図４においてｒｏｏｔ直下のディレクトリエントリー配列では、ファイル名「あ．ＪＰＧ」は、ディレクトリエントリー配列のインデックスＩは［１］である。そのため、図６（ａ）では、このインデックス［１］を７桁のＩＤとして表した「0000001」（10進数）とし、先頭の識別コード「FF」に、この７桁のＩＤである「0000001」をＡＳＣＩＩコードで表現した「30303030303031」（16進数）を付加する。こうしてＡＳＣＩＩコードで表現されたショートファイル名形式のファイル名（特別ファイル名）として「FF30303030303031」（16進数）を生成する。なお、図６（ａ）では、特別ファイル名のみを16進数のコードで示している。
【００７３】
次に、図６（ｂ）に示すようにフルパスファイル名が「ディレクトリ＋ファイル」の階層構造をもつ「ｒｏｏｔ￥い￥あ．ＪＰＧ」の場合を説明する。図４においてｒｏｏｔ直下のディレクトリエントリー配列において、ディレクトリ名「い」は、ディレクトリエントリー配列のインデックスＩが［２］である。さらにその下位階層のファイル名「あ．ＪＰＧ」は、サブディレクトリエントリー配列のインデックスＩが［０］である。そのため、図６（ｂ）では、まず、ディレクトリエントリー配列のインデックス［２］を７桁のＩＤとして表した「0000002」（10進数）とし、先頭の識別コード「FF」（16進数）に、この７桁のＩＤである「0000002」をＡＳＣＩＩコードで表現した「30303030303032」（16進数）を付加する。こうしてＡＳＣＩＩコードで表現されたショートファイル名形式のディレクトリ名（特別ファイル名）として「FF30303030303032」（16進数）を生成する。次に、サブディレクトリのディレクトリエントリー配列のインデックス［０］を７桁のＩＤとして表した「0000000」（10進数）とし、先頭の識別コード「FF」（16進数）に、この７桁のＩＤである「0000000」をＡＳＣＩＩコードで表現した「30303030303030」（16進数）を付加する。こうしてショートファイル名形式のファイル名（特別ファイル名）として「FF30303030303030」（16進数）を生成する。なお、図６（ｂ）では、ファイル特定名称に相当するディレクトリ名とファイル名のみを16進数のコードで示している。
【００７４】
次に、上記のように構成された複合機１１の作用を説明する。以下、アプリケーション部４１の処理及びファイルシステム４２の処理を図７〜図１０のフローチャートに従って説明する。図７は、アプリケーション部４１が行うアプリケーション処理を示すフローチャートである。また、図８は、ファイルシステム４２が行うファイルシステム処理を示すフローチャートである。以下、このアプリケーション処理を図７に従って説明する。なお、この処理は、複合機１１が電源オン状態にあるきにコンピューター３１が所定時間毎に実行する。
【００７５】
まずステップＳ１０では、メモリーカード１９を検出したか否かを判断する。新しいメモリーカードを検出した場合にステップＳ２０に進み、新しいメモリーカードを検出しなかった場合は当該処理を終了する。
【００７６】
ステップＳ２０では、ファイルシステム４２にファイル検索を要求する。
ステップＳ３０では、ファイル検索要求の応答としてファイルシステム４２からファイル情報ＦＩを順次取得する。
【００７７】
ステップＳ４０では、ファイルが適切であるか否かを判断する。詳しくは、アプリケーション部４１は、ファイル情報ＦＩからファイル名中の拡張子を取得し、取得した拡張子と、予め設定された設定拡張子とを比較し、取得した拡張子が設定拡張子と一致すればファイルが適切と判断し、一方、不一致であればファイルが不適切と判断する。本実施形態では、３文字の特定の拡張子が設定拡張子として設定されているので、設定拡張子以外の３文字の拡張子及び４文字以上の拡張子を含むファイルは不適切と判断される。ファイルが適切な場合はステップＳ５０に進み、ファイルが不適切な場合はステップＳ７０に進む。
【００７８】
ステップＳ５０では、ファイルリストＦＬにファイル情報を登録する。
次のステップＳ６０では、ファイル数をカウントアップする。
次のステップＳ７０では、全ファイル情報を取得したか否かを判断する。全ファイル情報を取得していなければ（否定判定の場合）、ステップＳ３０〜Ｓ７０の処理を繰り返してファイル情報ＦＩを順次取得し、各ファイル情報ＦＩに対して、適切性の判断（Ｓ４０）、登録（Ｓ５０）、カウントアップ（Ｓ６０）等の処理を行う。そして、全ファイル情報を取得して、ステップＳ７０で全ファイル情報を取得したと判断すると、ステップＳ８０に進む。
【００７９】
ステップＳ８０では、ユーザーによるファイル選択操作があったか否かを判断する。ユーザーは印刷を目的としてメモリーカード１９内の画像データを選択する際は、操作部２６を操作してメモリーカード１９内の画像を表示部２１に表示させる。ユーザーがファイルを選択操作すると、その選択されたファイルの画像が表示部２１に表示される。そして、操作部２６を操作して表示部２１の画像を順番に切り替え、所望の画像が見つかると、その画像を印刷対象に決定する。このため、コンピューター３１は、操作部２６の操作でファイルが選択されると、その選択されたファイル（画像データ）をメモリーカード１９から読み込む必要がある。コンピューター３１は、ユーザーによるファイル選択操作があると（Ｓ８０で肯定判定）、ステップＳ９０に進む。なお、ファイル選択操作には、ユーザーが特定のファイルを選択する操作と、メモリーカード１９内の画像を先頭から順番に表示させる操作とがある。
【００８０】
ステップＳ９０では、ファイルシステム４２にファイルの読込要求を行う。
ステップＳ１００では、ファイルを取得したか否かを判断する。すなわち、アプリケーション部４１は、ファイルシステム４２からファイルＦを取得するまで待ち、ファイルＦを取得すると、ステップＳ１１０に進む。
【００８１】
ステップＳ１１０では、ファイルＦ（画像データ）に基づく画像の表示部２１への表示又は当該画像の印刷を行う。すなわち、ユーザーが操作部２６で選択したファイルに対応する画像を表示部２１に表示する。ユーザーは必要に応じて操作部２６を操作して表示部２１の画像を切り替えて、所望の画像があると印刷対象に決定する。また、表示部２１にサムネイル画像が表示される構成の場合は、画像データ（本画像）が複合機１１側に読み込まれていないので、スタートボタン２４による印刷実行操作（Ｓ８０におけるファイル選択操作）が行われたときにファイル読込要求（Ｓ９０）を行って、ファイルを取得すると（Ｓ１００で肯定判定）、そのファイル（画像データ）に基づく画像の印刷を行う。
【００８２】
ファイルシステム４２は、このアプリケーション処理においてアプリケーション部４１から要求された処理を実行する。次に、ファイルシステム４２が実行するファイルシステム処理を図８に従って説明する。このファイルシステム処理は、コンピューター３１が例えばファイルシステム用プログラムを実行することにより行われる。
【００８３】
まずステップＳ２１０では、ファイル検索要求を受信したか否かを判断する。ファイルシステム４２はアプリケーション部４１からファイル検索要求があると、ステップＳ２２０に進み、ファイル検索要求がなければ当該処理を終了する。
【００８４】
ステップＳ２２０では、メモリーカード１９にアクセスしてフォーマット形式を判定する。すなわち、フォーマット形式判定部６１がメモリーカード１９からフォーマット情報を取得し、そのフォーマット情報に基づいてメモリーカード１９のフォーマット形式を判定する。
【００８５】
次のステップＳ２３０では、複数のＦＡＴ５１〜５４等のうち、判定したフォーマット形式に応じたＦＡＴを起動し、その起動したＦＡＴがディレクトリエントリーを取得する。
【００８６】
次のステップＳ２４０では、ファイル特定名称の変換処理を行う。前のＳ２３０で取得したディレクトリエントリー中のファイル情報ＦＩを取り出し、ファイル情報ＦＩに含まれるファイル名、又はフルパスファイル名の階層毎のディレクトリ名やファイル名からなる「ファイル特定名称」の変換処理を行う。この変換処理はファイル名変換部６０が行い、メモリーカード１９のフォーマット形式が例えばユニコード（ＵＴＦ−１６）を用いるものであれば、ファイル特定名称を、ユニコード（ＵＴＦ−１６）で表現されたロングファイル名から、１バイト文字コード（ＡＳＣＩＩコード）で表現されたショートファイル名に変換する。また、メモリーカード１９のフォーマット形式が例えばシフトＪＩＳを用いるもの（「ＦＡＴ１６」「ＦＡＴ３２」）であれば、シフトＪＩＳで表現されたファイル特定名称を、１バイト文字コード（ＡＳＣＩＩコード）に変換する。フルパスファイル名を変換する場合、階層毎の各ファイル特定名称に対してこの変換処理をそれぞれ行う。この変換処理は、コンピューター３１のファイル名変換部６０が図９に示すファイル特定名称変換処理ルーチンを実行することにより行われる。このファイル特定名称変換処理の詳細は後述する。
【００８７】
次のステップＳ２５０では、アプリケーション部４１にファイル情報ＦＩを送信する。例えば複数バイト文字を含む文字列から１バイト文字コード（ＡＳＣＩＩコード）に変換されたファイル名及びフルパスファイル名を含むファイル情報ＦＩがアプリケーション部４１に送信される。このとき、ロングファイル名は、１バイト文字コード（ＡＳＣＩＩコード）のショートファイル名に変換される。
【００８８】
こうしてアプリケーション部４１へはショートファイル名形式（８．３形式）のファイル情報ＦＩが送信される。その後、ユーザーが操作部２６でメモリーカード１９内のファイルの選択操作を行うと、ファイルシステム４２は、アプリケーション部４１からファイルアクセス要求（ファイル読込要求）を受け付ける。
【００８９】
ステップＳ２６０では、ファイルアクセス要求を受け付けたか否かを判断する。ファイルアクセス要求を受け付けていなければ待機し、ファイルアクセス要求を受け付ければ、ステップＳ２７０に進む。
【００９０】
ステップＳ２７０では、ファイルアクセス処理を行う。このとき、ファイルアクセス要求で指定されるフルパスファイル名は、ファイル名変換部６０による変換処理で生成された特別ファイル名を含むものである場合がある。この場合、ファイル名変換部６０は、特別ファイル名を、ディレクトリエントリー配列のインデックスＩへ逆変換して、シフトＪＩＳ又はユニコード（ＵＴＦ−１６）のインデックスＩを取得する。そして、インデックスＩで特定されるディレクトリエントリーＤＥにアクセスしてクラスター位置情報ＣＰを取得する。さらに、その取得したクラスター位置情報ＣＰに基づくクラスター位置にアクセスして、ファイル（クラスタデータ）を取得する。このファイルアクセス処理は、コンピューター３１が図１０にフローチャートで示すファイルアクセス処理ルーチンを実行することにより行われる。このファイルアクセス処理の詳細は後述する。
【００９１】
そして、次のステップＳ２８０では、ファイル（クラスタデータ）をアプリケーション部４１に送信する。こうしてアプリケーション部４１は要求したファイルＦを取得し、そのファイル（画像データ）に基づく画像を表示部２１に表示する。又は、ユーザーが印刷すべき画像を確定してスタートボタン２４を操作すると、プリンター部１４はファイル（画像データ）に基づく画像を用紙Ｐに印刷する。
【００９２】
次に、図８におけるファイルシステム処理におけるファイル特定名称変換処理（Ｓ２４０）と、ファイルアクセス処理（Ｓ２７０）の詳細を、図９及び図１０を用いて説明する。まずファイル特定名称変換処理を図９に従って説明する。なお、図９において登場する「Ｊ」とは、ファイル特定名称を構成する文字列において先頭から何番目の文字であるかを示す数字である。
【００９３】
また、本例では、メモリーカード１９は、ＡＳＣＩＩコードに対応する「ＦＡＴ１２」でフォーマットされている場合、シフトＪＩＳに対応する「ＦＡＴ１６」「ＦＡＴ３２」でフォーマットされている場合、ユニコード（ＵＴＦ−１６）のロングファイル名形式に対応する「ｅｘＦＡＴ」でフォーマットされている場合がある。ファイル名変換部６０は、ＦＡＴ５１〜５４のうちどのＦＡＴが使用（起動）されているかを認識し、使用中のＦＡＴに対応する文字符号化方式が、ＡＳＣＩＩ、シフトＪＩＳ、ユニコード（ＵＴＦ−１６）のうちのどれであるかも認識している。
【００９４】
また、ファイル特定名称変換処理の前の処理では、メモリーカード１９からディレクトリエントリーを取得し、取得したディレクトリエントリー中のファイル情報ＦＩからフルパスファイル名を取得している。そして、フルパスファイル名の各階層のファイル特定名称（ディレクトリ名、サブディレクトリ名、ファイル名等）を、上位階層から順番に名称変換処理の対象とする。最初は、例えば第１階層のディレクトリ名が処理対象とされる。
【００９５】
まずステップＳ３１０では、初期値Ｊ＝１を設定する。なお、Ｊは、１バイト文字換算で何文字目かを示す値である。但し、英数字は２バイト文字（例えばユニコードのとき）であっても１文字と計数する。
【００９６】
次のステップＳ３２０では、Ｊ番目の文字があるか否かを判断する。この判断は、文字数判定部６４が行う。ファイル特定名称が、例えばディレクトリ名（フォルダー名）の場合、ディレクトリの境界を意味する記号「\」の値「5C」（16進数）を終端文字とする。そして、対象の文字（これから名称構成解析しようとする次の文字）が、終端文字（「5C」）でなければ文字があると判断し、終端文字であると文字がないと判断する。また、ファイル特定名称が、例えばファイル名である場合、名称と拡張子との間の「．」（ドット）の値「2E」（16進数）を終端文字とする。そして、対象の文字が、終端文字（「2E」）でなければ文字があると判断し、終端文字であると文字がないと判断する。Ｊ番目の文字があればステップＳ３３０に進み、Ｊ番目の文字がなければステップＳ３７０に進む。今回はＪ＝１で１文字目なので、文字があると判断され、ステップＳ３３０に進むことになる。
【００９７】
ステップＳ３３０では、Ｊ番目の文字が１バイト文字であるか複数バイト文字であるかを判定する。この判定は、名称構成判定部６３が行う。名称構成判定部６３は、まず使用中のＦＡＴを確認し、使用中のＦＡＴが「ｅｘＦＡＴ」であればユニコード（ＵＴＦ−１６）が使用されるので、対象文字が複数バイト文字であると判定する。一方、使用中のＦＡＴが「ＦＡＴ１６」又は「ＦＡＴ３２」であれば、１バイト文字と複数バイト文字の両方を含むシフトＪＩＳが使用される。このため、シフトＪＩＳが使用される場合、名称構成判定部６３は、対象文字が１バイト文字か複数バイト文字かを判定するために、対象文字の文字構成を解析する。本例では、使用中のＦＡＴが「ＦＡＴ１２」である場合は１バイト文字のＡＳＣＩＩが使用されるが、この場合も、名称構成判定部６３は、対象文字が１バイト文字か複数バイト文字かを判定する。
【００９８】
名称構成判定部６３は、対象の文字コードを１バイトずつ判定する。シフトＪＩＳの場合、日本語の文字は２バイト文字になり、その上位１バイト（１バイト目）はＡＳＣＩＩ（又はＩＳＯ６４６）で未使用の値になる。例えばＡＳＣＩＩでは、「00」〜「7F」、「A1」〜「DF」（１６進数）が使用される。シフトＪＩＳでは、漢字、平仮名、片仮名（全角文字）は、上位１ビットに、ＡＳＣＩＩで未使用の「81」〜「9F」、「E0」〜「EA」、「ED」，「EE」が使用される。そして、前述のように、下位１バイト（２バイト目）にディレクトリの境界を意味する「5C」を含む文字もある。
【００９９】
名称構成判定部６３は、対象の文字コードを１バイトずつＡＳＣＩＩに属する値であるか否かを判定する。名称構成判定部６３は、対象の文字コードの１バイト目がＡＳＣＩＩに属する値であれば、対象文字を１バイト文字であると判定し、一方、対象の文字コードの１バイト目がＡＳＣＩＩに属さない値であれば、対象文字を複数バイト文字であると判定する。例えば対象文字がシフトＪＩＳにおける日本語の文字の「表」(955C)であった場合、１バイト目の「95」がＡＳＣＩＩに属さない値なので、複数バイト文字と判定される。この場合、既に判定結果が出たので、２バイト目の「5C」（16進数）の判定は行わない。また、「ＦＡＴ１２」が使用中で文字符号化方式がＡＳＣＩＩの場合、対象文字の１バイトがＡＳＣＩＩに属する値と判定されるので、対象文字が１バイト文字であると判定される。もちろん、使用中のＦＡＴを判定し、ＡＳＣＩＩが使用される「ＦＡＴ１２」であれば、対象文字が１バイト文字であると判定してもよい。対象文字が１バイト文字でなければ（つまり複数バイト文字であれば）ステップＳ３４０に進み、１バイト文字であればステップＳ３５０に進む。なお、本実施形態では、ステップＳ３３０の判定処理が、１バイト文字であるか複数バイト文字であるかを判定する判定ステップに相当する。
【０１００】
ステップＳ３４０では、英数字であるか否かを判断する。この判断は、名称構成判定部６３が行う。ここでは、ユニコードの英数字であるか否かを判断する。ユニコードは、２バイト文字であるが、英数字は上位１ビットが「00」（16進数）であり、下位１ビットがその英数字をＡＳＣＩＩコードで表したときの値になっている。このため、名称構成判定部６３は、対象文字の上位１バイトが「00」（16進数）であるか否かを判断する。上位１バイトが「00」（16進数）であって対象文字が英数字である場合はステップＳ３５０に進み、英数字でない場合はステップＳ３９０に進む。なお、本実施形態では、このステップＳ３５０の処理を実行するＣＰＵ３５により、文字判定手段が構成される。
【０１０１】
ステップＳ３５０では、Ｊ＞８であるか否かを判断する。つまり、ファイル特定名称の文字数が、ショートファイル名形式（８．３形式）の最大文字数である８文字を超えるか否かを判断する。Ｊ＞８が成立した場合はステップＳ３９０に進み、Ｊ＞８が不成立の場合はステップＳ３６０に進む。例えば１文字目（Ｊ＝１）である場合、Ｊ＞８が不成立なので、ステップＳ３６０に進む。
【０１０２】
ステップＳ３６０では、Ｊをインクリメントする（Ｊ＝Ｊ＋１）。つまり、対象文字を次の文字に移行させる。例えば１文字目の解析（Ｓ３３０，Ｓ３４０）を終えると、Ｊ＝２とし、解析の対象を２文字目に移す。その後、ステップＳ３２０に戻る。
【０１０３】
次の対象文字についてステップＳ３２０〜Ｓ３４０の処理を行い、対象文字が８文字目を超えていなければ（Ｓ３５０で否定判定）、対象文字を次のＪ番目（＝Ｊ＋１）とする。こうして１文字ずつ順番にステップＳ３２０〜Ｓ３４０の処理を行う。例えばファイル特定名称が、８文字以下の英数字からなる場合、最終文字の次のＪ番目の文字がないと判断されるので（Ｓ３２０で否定判定）、ステップＳ３７０に進む。
【０１０４】
ステップＳ３７０では、ｅｘＦＡＴであるか否かを判断する。つまり、ファイル特定名称がユニコード（ＵＴＦ−１６）であるか否かを判断する。ｅｘＦＡＴであればステップＳ３８０に進み、ｅｘＦＡＴでなければステップＳ４１０に進む。
【０１０５】
ステップＳ３８０では、文字毎に上位１バイト「00」を削除し、下位１バイトを文字数分配列する。これにより、８文字以下の英数字からなるユニコード列（複数バイト文字列）を、ショートファイル名形式の英数字からなるＡＳＣＩＩコード列（１バイト文字列）で表現されたファイル特定名称に変換する。このようにユニコードでも８文字以下の英数字からなる場合は、同じ英数字がそのまま使われた同一文字のＡＳＣＩＩコード列からなるショートファイル名に変換される。
【０１０６】
一方、英数字以外の文字、例えば日本語文字を１文字でも含んでいたり（Ｓ３３０とＳ３４０で否定判定）、文字数が８文字を超えたりして（Ｓ３５０で肯定判定）、そのままの文字を使ったショートファイル名に変換できない場合は、ステップＳ３９０に進む。ファイル特定名称が、シフトＪＩＳの日本語文字を含む場合、１バイト文字ではないと判定され（Ｓ３３０で否定判定）、かつ英数字でもないと判定される（Ｓ３４０で否定判定）ので、ステップＳ３９０に進む。そして、ステップＳ３９０及びＳ４００の各処理が行われることで、ファイル特定名称は、ショートファイル名形式の特別ファイル名に変換される。
【０１０７】
まずステップＳ３９０では、ディレクトリエントリー配列のインデックスＩを取得する。ファイルシステム４２は、起動中のＦＡＴを介してメモリーカード１９にアクセスし、ディレクトリエントリー配列のインデックスＩを取得する。例えば図６（ａ）の例のように、ｒｏｏｔ直下のファイル「あ．ＪＰＧ」のファイル情報ＦＩを取得しようとする場合、ディレクトリエントリー配列のインデックス［１］を取得する。また、例えば図６（ｂ）の例のように、ｒｏｏｔ直下のディレクトリ「い」の下位階層のファイル「あ．ＪＰＧ」のファイル情報ＦＩを取得しようとしたとする。この場合、図４に示すように、ディレクトリ「い」に対応するディレクトリエントリー配列のインデックス［２］と、そのサブディレクトリ中のファイル「あ．ＪＰＧ」に対応するディレクトリエントリー配列のインデックス［０］とを取得する。但し、階層毎に処理を行うので、まずディレクトリ「い」に対応するディレクトリエントリー配列のインデックス［２］を取得する。
【０１０８】
次のステップＳ４００では、インデックスＩを７桁のＩＤとしてＡＳＣＩＩコードで表現し、先頭に識別コード「ＦＦ」を付与して、ショートファイル名形式のファイル特定名称を生成する。図６（ａ）の例では、ディレクトリエントリー配列のインデックス［１］を７桁のＩＤ「0000001」（10進数）とし、これをＡＳＣＩＩコードに変換して「30303030303031」（16進数）を取得する。そして、先頭に特別ファイル名であることを示す識別コードを置き、この下位に「30303030303031」（16進数）を付加して、ＡＳＣＩＩコードで表現されたショートファイル名「FF30303030303031」（16進数）を生成する。よって、図６（ａ）に示すようなショートファイル名形式のフルパスファイル名「rootFF30303030303031」を取得できる。
【０１０９】
また、図６（ｂ）の例では、ディレクトリ「い」に対応するディレクトリエントリー配列のインデックス［２］を７桁のＩＤ「0000002」（10進数）とし、これをＡＳＣＩＩコードに変換して「30303030303032」（16進数）を取得する。そして、先頭に特別ファイル名であることを示す識別コード「FF」（16進数）を置き、この下位に、「30303030303032」を付加して、ＡＳＣＩＩコードで表現されたショートファイル名形式のディレクトリ名「FF30303030303032」（16進数）を生成する。
【０１１０】
そして、ステップＳ４１０では、全てのファイル特定名称の変換を終了したか否かを判断する。全てのファイル特定名称の変換を終了していなければ（Ｓ４１０で否定判定）、処理対象を次のファイル特定名称に切り替え（ステップＳ４２０）、次のファイル特定名称を対象にステップＳ３１０〜Ｓ４００の処理を同様に行う。例えば複数階層からなるフルパスファイル名である場合、階層毎のファイル特定名称にそれぞれステップＳ３１０〜Ｓ４００の処理を行う。
【０１１１】
次の階層のファイル特定名称が日本語文字を含む場合、また日本語文字を含まなくても８文字を超える場合は、ステップＳ３９０に進む。そして、ステップＳ３９０及びＳ４００の処理を行うことによって、識別コード「FF」（16進数）と、ディレクトリエントリー配列のインデックスＩを示す７桁のＩＤをＡＳＣＩＩコードで表現した値とを含むショートファイル名形式のファイル特定名称を生成する。
【０１１２】
図６（ｂ）の例では、下位階層のサブディレクトリ中のファイル「あ．ＪＰＧ」に対応するディレクトリエントリー配列のインデックス［０］を７桁のＩＤ「0000000」とし、これをＡＳＣＩＩコードに変換して「30303030303030」（16進数）を取得する。そして、先頭に特別ファイル名であることを示す識別コード「FF」（16進数）を置き、この下位に、「30303030303030」を付加して、ＡＳＣＩＩコードで表現されたショートファイル名形式のファイル名「FF30303030303030」（16進数）を生成する。よって、図６（ｂ）に示す例ではショートファイル名形式のフルパスファイル名「rootFF30303030303032FF30303030303030.JPG」を生成する。なお、図６の例では、ファイル特定名称に相当するディレクトリ名及びファイル名のみを１６進数のコードで示している。実際は、「ｒｏｏｔ」、ディレクトリの境界記号「\」、ドット「．」拡張子「ＪＰＧ」もＡＳＣＩＩコードに変換される。また、本実施形態では、ステップＳ３９０及びＳ４００が、名称変換ステップに相当する。
【０１１３】
そして、フルパスファイル名に含まれる全階層のファイル特定名称の変換処理を終了すると（Ｓ４１０で肯定判定）、図８のステップＳ２５０に進む。なお、ファイル情報ＦＩ中のファイル名については、フルパスファイル名の最終階層のファイル特定名称で処理したものを使用するが、ファイル名についても個別にファイル特定名称変換処理（図９）を行ってもよい。
【０１１４】
図８に示すステップＳ２５０では、ファイル情報ＦＩをアプリケーション部４１に送信する。よって、ファイルシステム４２からアプリケーション部４１へは、フルパスファイル名及びファイル名が１バイト文字コード（ＡＳＣＩＩコード）のショートファイル名形式に変換されたファイル情報ＦＩが送られる。この結果、アプリケーション部４１は、ショートファイル名形式にしか対応していなくても、受け取ったファイル情報ＦＩ中のファイル名及びフルパスファイル名を解読でき、適切なファイル情報ＦＩをファイルリストＦＬに登録できる。
【０１１５】
本実施形態の複合機１１は複数のカードスロット２０（図１では１つのみ図示）を備えており、複数枚のメモリーカード１９が挿着されているときは、先に挿着された一方のみを認識し、その認識中の先のメモリーカード１９が抜き取られた時点で、後から挿着されたメモリーカード１９を認識する。このため、同時に複数のメモリーカード１９を認識することはない。よって、ファイル名変換部６０によって生成されたフルパスファイル名は及びファイル名は、一意の名称（コード）になっている。
【０１１６】
次にファイルアクセス処理を図１０に従って説明する。ファイルシステム４２は、アプリケーション部４１からファイル読込要求を受け付けると、ファイルアクセス処理を実行する。このファイル読込要求で指定されたフルパスファイル名中の最上位階層（ｒｏｏｔ直下の階層）のファイル特定名称（図６（ａ）の例ではファイル名、図６（ｂ）の例ではディレクトリ名）を１回目の処理対象として取得する。なお、このファイルアクセス処理は、コンピューター３１がファイルシステム用プログラム中のファイルアクセス用プログラムを実行することにより行われる。
【０１１７】
ステップＳ５１０では、特別ファイル名であるか否かを判断する。すなわち、ファイル特定名称の先頭に識別コード「ＦＦ」（16進数）が存在するか否かを判断する。例えば図６（ａ）に示すショートファイル名「FF30303030303031」（16進数）の場合は、先頭に「ＦＦ」が存在するので、特別ファイル名と判断される。また、図６（ｂ）に示すショートファイル名「FF30303030303032」（16進数）の場合も、先頭に「ＦＦ」が存在するので、特別ファイル名と判断される。特別ファイル名において先頭の識別コード以外の文字列は、インデックスＩを示している。このような特別ファイル名であった場合はステップＳ５２０に進む。なお、ここでいう「特別ファイル名」とは、先頭が識別コードでそれ以外の文字列がインデックスＩを示すファイル名とディレクトリ名の総称である。
【０１１８】
一方、ファイル特定名称が特別ファイル名でない場合はステップＳ５４０に進む。ここで、特別ファイル名でないファイル特定名称には、例えば図４においてディレクトリエントリー配列のインデックス［０］にあるファイル「A.JPG」のように、８文字以下の英数字からなるファイル名が該当する。この場合、英数字「Ａ」はＡＳＣＩＩコードで「４１」（16進数）であり、先頭に識別コード「ＦＦ」が存在しないので、特別ファイル名ではないと判断される。特別ファイル名でないファイル特定名称には、元々ＡＳＣＩＩコードで表現され変換が行われていないものと、第１変換部６５によりユニコードからＡＳＣＩＩコードに変換されたものとがある。
【０１１９】
ステップＳ５２０では、文字列になっているインデックスＩを数値に変換（逆変換）する。例えば特別ファイル名「FF30303030303031」（16進数）は、インデックス［１］に逆変換される。この逆変換は第２変換部６６が行う。詳しくは、第２変換部６６は、特別ファイル名「FF30303030303031」（16進数）のうち先頭の識別コード「ＦＦ」以外の７桁のＩＤに相当する部分「30303030303031」（16進数）を抜取り、「30303030303031」（16進数）から７桁にするために付加した数字「０」（「30」（16進数））を削除して「31」（16進数）を得る。そして、この「31」（16進数）を、そのとき使用中のＦＡＴに対応する文字符号化方式（ＡＳＣＩＩ、シフトＪＩＳ、ユニコード（ＵＴＦ−１６））に基づく文字コードに変換する。このとき、ＡＳＣＩＩとシフトＪＩＳのときは１バイト文字「31」（16進数）のまま、ユニコードのときは２バイト文字「0031」（16進数）に変換される。
【０１２０】
ステップＳ５３０では、ディレクトリエントリーから、先に変換したインデックスＩに保存されているクラスター位置情報ＣＰを取得する。例えばインデックス［１］のときは、図４におけるインデックス［１］のファイル「あ．ＪＰＧ」のディレクトリエントリー構造体ＤＣ中のクラスター位置情報ＣＰを取得する。この処理は、パス解析部６７が行う。
【０１２１】
一方、ステップＳ５４０では、メモリーカード１９のフォーマットに対応するＦＡＴが「ｅｘＦＡＴ」であるか否かを判定する。「ｅｘＦＡＴ」であればステップＳ５５０に進み、ｅｘＦＡＴでなければステップＳ５６０に進む。なお、「ｅｘＦＡＴ」以外のＦＡＴである場合、すなわち「ＦＡＴ１２」「ＦＡＴ１６」「ＦＡＴ３２」の場合は、符号化方式としてＡＳＣＩＩ又はシフトＪＩＳが使用され、英数字は１バイト文字であってＡＳＣＩＩコードと同じ値なので、ＡＳＣＩＩコードからの変換の必要がない。
【０１２２】
ステップＳ５５０では、ＡＳＣＩＩからＵＴＦ−１６に変換する。例えば文字「Ａ」の１バイト系文字コードであるＡＳＣＩＩコードで示された「41」（16進数）を、２バイト系文字コードであるユニコード（ＵＴＦ−１６）で示された「0041」（16進数）に変換する。この変換後のユニコードの文字列はフルパスファイル名のうち第１階層のファイル特定名称（ディレクトリ名又はファイル名）を示している。
【０１２３】
そして、次のステップＳ５６０では、文字列比較しながらディレクトリエントリーを検索し、指定のファイル特定名称（ディレクトリ名又はファイル名）に該当するクラスター位置情報ＣＰを取得する。例えば文字列「Ａ．ＪＰＧ」であれば、この文字列と一致する文字列のディレクトリエントリーを検索し、検索したディレクトリエントリーが指し示すディレクトリエントリー構造体ＤＣ（図４参照）内のクラスター位置情報ＣＰを取得する。
【０１２４】
ステップＳ５７０では、クラスターデータにアクセスする。すなわち、メモリーカード１９におけるクラスター位置情報ＣＰで示されたクラスター位置（クラスター番号）にアクセスしてクラスターデータを読み出す。
【０１２５】
ステップＳ５８０では、ディレクトリの階層回数繰り返したか否かを判断する。ディレクトリの階層回数繰り返していなければ、ステップＳ５９０で次の階層（下位階層）へ移行した後、ステップＳ５１０に戻る。そして、複数階層の場合は、次の階層でもステップＳ５１０〜Ｓ５７０の処理を同様に繰り返す。そして、ディレクトリの全階層で取得した全てのクラスター位置からクラスターデータを取得することで、最終的にファイル（画像データ）を取得する。
【０１２６】
こうしてファイルアクセス処理を終わると、取得したファイルＦはファイルシステム４２からアプリケーション部４１へ送られる（図８におけるＳ２８０、図３における（8））。そして、アプリケーション部４１は、ファイルに基づく画像を表示部２１に表示させたり、ファイルに基づく画像をプリンター部１４により用紙Ｐに印刷したりする。
【０１２７】
以上詳述したように、本実施形態では、以下に示す効果を得ることができる。
（１）ファイル名変換部６０（名称変換手段）により、複数バイト文字を含むファイル名及びディレクトリ名などのファイル特定名称（第１名称）を、１バイト文字コードで表現された特別ファイル名（第２名称）に変換する。このとき、ファイル名変換部６０は、メモリーカード１９においてフルパスファイル名（データ特定情報）の所在位置を示すディレクトリエントリー配列の一意なインデックスＩを１バイト文字コードに変換してショートファイル名形式の特別ファイル名（第２名称）を生成する。よって、アプリケーション部４１がファイル特定名称を解析するとき、複数バイト文字の値の一部の「5C」をディレクトリの境界を意味する『\』と解釈する不都合を回避できる。このため、アプリケーション部４１は、ディレクトリの境界を間違うことなくフルパスファイル名を正しく解釈することができる。この結果、例えばユーザーが選択した画像のファイルを、フルパスファイル名を指定してファイルシステム４２に対してファイル読込要求をした際に、メモリーカード１９からファイルシステム４２を介して正しいファイルＦを読み込むことができる。この結果、ユーザーが表示部２１を見ながら操作部２６で選択した画像を印刷することができる。また、既存のアプリケーション部４１を修正することなくそのまま使用し、「5C」を含む複数バイト文字を含む文字列で示されたフルパスファイル名を指定して、ファイルＦにアクセスすることが可能となる。
【０１２８】
（２）ロングファイル名形式で８文字を超えるファイル特定名称（第１名称）を、１バイト文字コードで表現されたショートファイル名形式のファイル特定名称（第２名称）に変換する。よって、ショートファイル名形式にのみ対応可能なアプリケーション部４１は、メモリーカード１９からファイルシステム４２を介して読み込んだフルパスファイル名を正しく解釈できる。
【０１２９】
（３）アプリケーション部４１が解読可能なショートファイル名形式（８．３形式）のファイル特定名称であるか否かを、１バイト文字であるか否かの判断、及び８文字以下であるか否かの判断により判定し、ショートファイル名形式（８．３形式）のファイル特定名称である場合には、特別ファイル名への変換は行わない。よって、ファイル名変換部６０がインデックスＩを取得して特別ファイル名へ変換する処理、及び特別ファイル名からインデックスＩへ逆変換する処理の実施回数を相対的に減らし、この種の変換処理の負担を軽減できる。この結果、要求したファイル情報ＦＩがファイルシステム４２からアプリケーション部４１へ送られてくる応答速度、及び要求したファイルＦがファイルシステム４２からアプリケーション部４１へ送られてくる応答速度を相対的に高めることができる。このため、アプリケーション部４１によるファイル情報ＦＩの登録処理や、アプリケーション部４１がファイルを読み込んでその画像を表示したりその画像の印刷を開始したりする際の処理の遅延を比較的小さく抑えることができる。
【０１３０】
（４）ファイル特定名称の文字列がユニコード（ワイド文字）で表現されるものであっても、英数字からなる８文字以下のファイル特定名称については、１バイト文字コード（ＡＳＣＩＩコード）に変換する。この場合、ユニコードの上位１バイトの「00」（16進数）を削除するだけの簡単な処理で済む。よって、ファイル名変換部６０の処理負担を一層軽減でき、アプリケーション部４１によるファイル情報ＦＩの登録処理の遅延を比較的小さく抑えることができる。また、逆変換処理の負担も軽減されるので、アプリケーション部４１がファイルを読み込んでその画像を表示したりその画像の印刷を開始したりする際の処理の遅延を一層小さく抑えることができる。
【０１３１】
（５）ファイル特定名称の文字コード列を１バイトずつ解析し、１バイト文字コード（ＡＳＣＩＩコード）であるか否かを判定する。そして、判定対象の１バイトが１バイト文字コードでない場合に複数バイト文字であると判定する。よって、複数バイト文字であることを比較的簡単かつ適切に判定できる。
【０１３２】
（６）ファイル特定名称が複数バイト文字を含む場合は、ディレクトリエントリー配列のインデックスＩを７桁のＩＤとしてＡＳＣＩＩコードに変換するとともに、先頭に識別コード「ＦＦ」を付してショートファイル名形式（８．３形式）のファイル特定名称を生成する。よって、一意なショートファイル名を生成できるうえ、識別コード「ＦＦ」の有無によって、特別ファイル名であるか否かを適切に判断できる。このため、特別ファイル名を逆変換して適切なインデックスＩを取得でき、その取得したインデックスＩを基にクラスター位置情報を取得することができる。
【０１３３】
（７）複合機１１は、ファイル名変換部６０を内蔵するファイルシステム４２を備えるので、アプリケーション部４１は、ファイルシステム４２がシフトＪＩＳ及びユニコードに対応する形式でフォーマットされたメモリーカード１９にアクセスした取得したデータ特定情報（フルパスファイル名やファイル名）を解読することができる。
【０１３４】
なお、上記実施形態は以下のような形態に変更することもできる。
・判定手段は、１バイトずつ解析する方法に限定されない。記憶媒体にアクセスして当該記憶媒体に設定されているフォーマット形式を判定し、当該判定したフォーマット形式で使用される符号化方式から複数バイト文字を含むか否かを判定してもよい。複数バイト文字を含むと判定された場合、ファイル名変換部６０は、ファイル特定名称が英数字などの１バイト文字だけからなる文字列で構成されているか否かに関わらず、ファイル特定名称を特別ファイル名に変換する。
【０１３５】
・ディレクトリの境界を意味する「5C」を値に含むマルチバイト系文字コードは、日本語文字コードを含むシフトＪＩＳに限定されない。その他の日本語の文字符号化方式でもよい。さらに他国の言語の文字コードを含むマルチバイト系文字コードでもよい。要するに、２バイト以上の複数バイト文字が、ディレクトリの境界を意味する『\』（円記号）又は「バックスラッシュ」を表す値「5C」（16進数）を含むような文字符号化方式あればよい。そして、その文字符号化方式で表現されたファイル特定名称を、１バイト文字だけで表現される８・３形式の特別ファイル名に変換する構成であれば、本発明を適用することができる。
【０１３６】
・インデックスは、ディレクトリエントリー配列のインデックスＩに限定されない。情報処理装置（例えばファイルシステム）が独自に一意の番号を付してもよい。この場合、ディレクトリエントリー配列のインデックスＩと番号との対応関係を示す参照テーブルを作成しておけば、その参照テーブルを参照して番号から所在位置情報を取得し、データ特定情報で示された位置にアクセスしてデータ本体（ファイルＦ）を取得できる。
【０１３７】
・インデックスは数字に限定されない。一意な文字又は文字列であれば任意に設定してよい。例えば１バイト文字コードで使用できる英字や制御記号などの文字や文字列を採用できる。
【０１３８】
・ディレクトリの境界を表す「5C」（16進数）を値の一部にもつ複数バイト文字を含むファイル特定名称についてのみ特別ファイル名に変換する構成も採用できる。例えばそれ以外の日本語文字（複数バイト文字）については、他の変換方法を採用してもよい。
【０１３９】
・８文字以下の英数字からなるファイル特定名称についても、特別ファイル名に変換してもよい。つまり、ファイル特定名称は常に特別ファイル名に変換する構成とすることもできる。
【０１４０】
・マルチバイト文字コードのうちの複数バイト文字は、２バイト系に限定されず、３バイト系、４バイト系、５バイト系以上であってもよい。また、２バイトと３バイトが混在するなどのマルチバイト文字でもよい。
【０１４１】
・２バイト系文字コードから１バイト系文字コードへの変換に限定されない。例えば３バイト系文字コード又は４バイト系文字コードから１バイト系文字コードへ変換する構成でもよい。
【０１４２】
・ユニコード（Unicode）の文字符号化方式は、ＵＴＦ−８やＵＴＦ−３２、ＵＴＦ−７、ＵＴＦ−ＥＢＣＤＩＣ、ＳＣＳＵ、ＢＯＣＵ−１などでもよい。
・ファイル名変換部６０のうちフォーマット形式判定部６１以外の各部６２〜６７を有する変換モジュール（情報処理装置）を、アプリケーション部４１とファイルシステム４２との間に介在させた構成も採用できる。この場合、変換モジュールは、ファイルシステムから受け取ったディレクトリエントリー配列のインデックスを１バイト文字コードに変換することで第２名称を生成する。この構成であっても、アプリケーション部４１は、データ特定情報中の複数バイト文字を含む第１名称を、１バイト文字コードの第２名称として取得できる。
【０１４３】
・記憶媒体はメモリーカードに限定されず、他の可搬性（リムーバブル）の記憶媒体であってもよい。例えば、ＣＤ（コンパクトディスク）やＤＶＤ（Digital Versatile Disk）などの光ディスク、ＭＯ（光磁気ディスク）、ＵＳＢフラッシュメモリー、リムーバブルハードディスク等でもよい。
【０１４４】
・電子機器が記録装置である場合、複合機１１のようなインクジェット式記録装置に限定されず、ワイヤインパクト式記録装置、熱転写式記録装置、電子写真式記録装置等の記録装置を採用してもよい。また、スキャナー機能を備えない記録装置を採用してもよい。
【０１４５】
・電子機器は、記録装置にも限定されない。例えばプロジェクター、テレビ、デジタルフォトフレーム、デジタルカメラ、オーディオ機器などでもよい。
【符号の説明】
【０１４６】
１１…電子機器の一例としての複合機、１９…記憶媒体の一例であるメモリーカード、２０…カードスロット、３１…コンピューター、３２…メモリーカードＩ／Ｆ、３５…ＣＰＵ、３６…ＡＳＩＣ、３７…ＲＯＭ、３８…ＲＡＭ、４１…アプリケーション部、４２…情報処理装置としてのファイルシステム、４３…カウントアップ処理部、４４…ファイル情報登録部、４５…ファイル要求部、５１〜５４…ＦＡＴ、６０…ファイル名変換部、６１…判定手段を構成するフォーマット形式判定部、６２…カウンター、６３…判定手段を構成するとともに文字判定手段の一例としての名称構成判定部、６４…判定手段を構成するとともに文字数判定手段の一例としての文字数判定部、６５…第１変換部、６６…逆変換部の一例としての第２変換部、６７…パス解析部、ＦＬ…ファイルリスト、ＦＩ…データ特定情報の一例であるファイル情報、Ｆ…データの一例であるファイル、ＣＰ…データ特定情報の所在位置にあるアクセス位置情報の一例としてのクラスター位置情報、ＤＥ…データ特定情報の所在位置の一例としてのディレクトリエントリー、Ｉ…一意な所在位置情報のうち第１名称と対応する部分の一例としてのディレクトリエントリー配列のインデックス、Ｐ…媒体としての用紙。
【図１】
2012194875.tif 000003
【図２】
2012194875.tif 000004
【図３】
2012194875.tif 000005
【図４】
2012194875.tif 000006
【図５】
2012194875.tif 000007
【図６】
2012194875.tif 000008
【図７】
2012194875.tif 000009
【図８】
2012194875.tif 000010
【図９】
2012194875.tif 000011
【図１０】
2012194875.tif 000012