(57)【要約】【課題】ユニコードを扱う形式でフォーマットされた記憶媒体にアクセスしても、アクセスして取得した情報を、ローカルコードに比較的簡単に変換して提供できる情報処理装置、電子機器、プログラム及び情報処理方法を提供する。【解決手段】ファイルシステム４２は複数種のＦＡＴ５１〜５４の他、ファイル名変換部６０を備える。ファイルシステム４２は、ＦＡＴ５４（ｅｘＦＡＴ）を介してメモリーカード１９からディレクトリエントリー（ファイル情報）を取得する。第１変換部６５は、ユニコード（例えばＵＴＦ−１６）の形式で取得したファイル情報中のフルパスファイル名を、ロングファイル名形式から、ＡＳＣＩＩコードを扱うショートファイル名形式に変換する。このとき第１変換部６５は、ディレクトリエントリー配列のインデックスをＡＳＣＩＩコードに変換してショートファイル名を生成する。【選択図】図３
2011216048.tif 000002
【特許請求の範囲】
【請求項１】
記憶媒体の接続機能を有する電子機器内に設けられ、当該電子機器内のアプリケーション部からの要求に応じて前記電子機器に接続中の記憶媒体にアクセスして取得したデータ特定情報を前記アプリケーション部に渡す情報処理装置であって、
前記データ特定情報に含まれる第１名称がユニコードであるか否かを判定する判定手段と、
前記ユニコードと判定された場合に、前記第１名称のユニコード列をローカルコード列の第２名称に変換する名称変換手段と、を備え、
前記名称変換手段は、前記記憶媒体において前記データ特定情報の所在位置を示す一意なインデックスを前記ローカルコード列に変換して前記第２名称を生成することを特徴とする情報処理装置。
【請求項２】
前記判定手段は、前記第１名称がユニコード列であっても、当該第１名称の文字列がローカルコード列で表現可能であるか否かを判定する文字判定手段を有し、前記名称変換手段は、前記第１名称の文字列がローカルコード列で表現可能と判定された場合、当該第１名称の文字列をローカルコード列に変換して前記第２名称を生成することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記第１名称はロングファイル名であり、前記第２名称はショートファイル名であって、
前記判定手段は、さらに前記第１名称の文字数がショートファイル名形式の最大文字数以下であるか否かを判定する文字数判定手段を備え、
前記名称変換手段は、前記第１名称の文字列がローカルコード列で表現可能と判定され、かつ前記第１名称の文字数が前記最大文字数以下である場合に、当該第１名称の文字列をローカルコード列に変換することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記ユニコードは複数バイト系文字コードであり、前記ローカルコードは１バイト系文字コードであって、
前記文字判定手段は、ユニコードの文字の最下位１バイトの値が、当該文字をローカルコードで表現した１バイトの値に一致するか否かを直接又は間接的に判定し、
前記名称変換手段は、前記文字判定手段が前記第１名称の各文字の最下位１バイトが当該各文字のローカルコードの値に一致したと判定した場合、前記ユニコードの文字の最下位１バイト以外の上位バイトを削除し、当該文字を前記最下位１バイトで表現することで前記ローカルコード列に変換する請求項２又は３に記載の情報処理装置。
【請求項５】
前記アプリケーション部に前記データ特定情報を渡した後、当該アプリケーション部からローカルコードの前記第２名称でアクセス位置を指定してアクセス要求を受け付けると、前記第２名称のローカルコード列を前記インデックスに逆変換する逆変換部を前記名称変換手段は備え、
前記逆変換部による逆変換で得た前記インデックスで示される前記所在位置にアクセスして前記データ特定情報を取得し、当該データ特定情報に基づきアクセスしてデータを取得することを特徴とする請求項１乃至４のうちいずれか一項に記載の情報処理装置。
【請求項６】
記録媒体の接続機能を有する電子機器であって、
請求項１乃至５のうちいずれか一項に記載の情報処理装置と、
前記情報処理装置に記録媒体へのアクセスを要求するアプリケーション部と、
を備えたことを特徴とする電子機器。
【請求項７】
前記アプリケーション部は、前記記憶媒体の接続を検出すると、前記情報処理装置に対して前記記憶媒体からのデータ特定情報の取得を要求することを特徴とする請求項６に記載の電子機器。
【請求項８】
アプリケーション部からの要求に応じて電子機器に接続された記憶媒体にアクセスして取得したデータ特定情報を前記アプリケーション部に渡す処理をコンピューターに実行させるためのプログラムであって、
コンピューターに、
前記記憶媒体にアクセスして取得したデータ特定情報に含まれる第１名称が、ユニコードで表現されているか否かを判定する判定ステップと、
前記ユニコードで表現されていると判定された場合に、前記第１名称のユニコード列を、ローカルコード列の第２名称に変換する名称変換ステップと、を実行させ、
前記名称変換ステップでは、前記記憶媒体において前記データ特定情報の所在位置を示す一意なインデックスを前記ローカルコードに変換して前記第２名称を生成することを特徴とするプログラム。
【請求項９】
アプリケーション部からの要求に応じて電子機器に接続された記憶媒体にアクセスして取得したデータ特定情報を前記アプリケーション部に渡す情報処理方法であって、
前記記憶媒体にアクセスして取得したデータ特定情報に含まれる第１名称が、ユニコードで表現されているか否かを判定する判定ステップと、
前記ユニコードで表現されていると判定された場合に、前記第１名称のユニコード列を、ローカルコード列の第２名称に変換する名称変換ステップと、を備え、
前記名称変換ステップでは、前記記憶媒体において前記データ特定情報の所在位置を示す一意なインデックスを前記ローカルコードに変換して前記第２名称を生成することを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーション部からの要求に応じて記憶媒体にアクセスするファイルシステムなどの情報処理装置、電子機器、プログラム及び情報処理方法に関する。
【背景技術】
【０００２】
例えば特許文献１には、メモリーカード等の記憶媒体にアクセスする機能を有するプリンター（電子機器）が開示されている。従来、この種の電子機器では、アプリケーション部はファイルシステムを介して記録媒体にアクセスし、記憶媒体から読み込んだファイル情報やファイル等を使って必要な各種処理を行う。ファイルシステムは複数種のＦＡＴを備え、記憶媒体のフォーマットに合った１つのＦＡＴを用いて記憶媒体にアクセスし、必要なファイル情報やファイルを取得する。
【０００３】
従来、ＦＡＴ１２、ＦＡＴ１６、ＦＡＴ３２に対応する形式でフォーマットされた記憶媒体に記憶されたファイル情報中のファイル名やディレクトリ名（フォルダー名）には、ＡＳＣＩＩコード等のローカルコードで表現されたショートファイル名（例えば８．３形式）が採用されていた。このため、アプリケーション部はショートファイル名形式（例えば８．３形式）にしか対応しておらず、ファイルシステムに対してショートファイル名形式で表現されたアクセス先（フルパスファイル名等）を指定してアクセス要求を出すことで、記憶媒体に対してリード及びライトしていた。
【０００４】
近年、ユニコード（Unicode）を扱う「ＵＴＦ−１６」などの文字符号化方式が登場し、ユニコードを扱う形式でフォーマットされたメモリーカードが電子機器のスロットに挿入される場合もありうる。この場合、ファイルシステムにユニコード（例えばＵＴＦ−１６）に対応するｅｘＦＡＴを追加することになる。
【０００５】
ここで、ローカルコードであるＡＳＣＩＩコードは英数字等の限られた文字を符号化する１バイト系符号化文字コードであり、使用できるファイル名等はショートファイル名に限られる。これに対して、ユニコード（ＵＴＦ−１６）は２バイト系符号化文字コードであり、ロングファイル名を使用できる。このため、従来のアプリケーション部のままでは、ローカルコードで表現されたショートファイル名形式のファイル名等を解読できるものの、ユニコードで表現されたロングファイル名形式のファイル名等を解読することはできない。つまり、アプリケーション部は、ｅｘＦＡＴで扱う文字コードであるユニコード（ＵＴＦ−１６）のロングファイル名で表現されたファイル情報やファイルにアクセスすることができない。
【０００６】
詳しくは、従来の電子機器におけるアプリケーション部は、ＡＳＣＩＩコードで表現された文字列を１文字分の１バイトずつ解析し、ファイル名を解読している。ユニコード（ＵＴＦ−１６）で英数字を表現すると、１文字を表す２バイト中、上位１バイトが「００」（16進数）になる。例えば、「Ｄ」の場合、ＡＳＣＩＩコードは「４４」（16進数）で表現されるのに対して、ユニコード（ＵＴＦ−１６）では「００４４」（16進数）と表現される。ＡＳＣＩＩコードでは「００」（16進数）は文字列の終端を意味するので、従来のアプリケーション部は、ユニコードの英数字を解読する際に、上位１バイトの「００」（16進数）を終端と認識してしまい、英数字を含むファイル名を解読できない。また、アプリケーション部は、ショートファイル名しか認識できなかったので、８文字を超えるロングファイル名形式のファイル名等も認識できない。
【０００７】
このため、アプリケーション部をユニコードで表現されたロングファイル名も解読できるように変更する必要があった。しかし、アプリケーション部のプログラムを変更する作業は大変な作業になる。このため、ユニコードをローカルコードに変換して、ファイル情報等をアプリケーション部へ渡すことができる変換モジュールを用意することが好ましい。
【０００８】
例えば特許文献２には、ローカルコード列とユニコード列との間の変換を行うファイル管理モジュールが開示されている。このファイル管理モジュールでは、記憶媒体内のファイル名のローカルコード列を、１バイトコードそれぞれに対していずれかのユニコードを重複なく割り当てた変換テーブルを用いて、ユニコード列に変換して提供する。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００５−２１０４３３号公報
【特許文献２】特開２００９−１４００６３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
また、特許文献１のファイル管理モジュールは、記憶媒体側のローカルコードをユニコードに変換する構成であるので、記憶媒体側のユニコード（ＵＴＦ−１６等）をローカルコードに変換することはできなかった。このため、電子機器に特許文献１のファイル管理モジュールを設けても、ユニコード（ＵＴＦ−１６等）の形式でフォーマットされたメモリーカードにアクセス対応できないという問題があった。また、特許文献１のファイル管理モジュールは、ユニコード列とローカルコード列との間の変換に、特別な変換テーブルを設けなければならず、変換テーブルを記憶するために必要なメモリーの記憶容量が増大してしまう。
【００１１】
本発明は、上記課題に鑑みてなされたものであり、その目的の一つは、ユニコードを扱う形式でフォーマットされた記憶媒体にアクセスしても、アクセスして取得した情報を、ローカルコードに比較的簡単に変換して提供できる情報処理装置、電子機器、プログラム及び情報処理方法を提供することにある。
【課題を解決するための手段】
【００１２】
上記課題を解決するために、本発明は、記憶媒体の接続機能を有する電子機器内に設けられ、当該電子機器内のアプリケーション部からの要求に応じて前記電子機器に接続中の記憶媒体にアクセスして取得したデータ特定情報を前記アプリケーション部に渡す情報処理装置であって、前記データ特定情報に含まれる第１名称がユニコードであるか否かを判定する判定手段と、前記ユニコードと判定された場合に、前記第１名称のユニコード列をローカルコード列の第２名称に変換する名称変換手段と、を備え、前記名称変換手段は、前記記憶媒体において前記データ特定情報の所在位置を示す一意なインデックスを前記ローカルコード列に変換して前記第２名称を生成することを要旨とする。
【００１３】
この発明によれば、記憶媒体にアクセスして取得したデータ特定情報に含まれる第１名称がユニコードであった場合、名称変換手段により、第１名称のユニコード列はローカルコード列の第２名称に変換される。このとき、データ特定情報の所在を示す一意なインデックスをローカルコード列に変換してローカルコード列の第２名称とする。よって、ユニコードを扱う形式でフォーマットされた記憶媒体にアクセスしても、取得したデータ特定情報をアプリケーション部が解読可能なローカルコードに比較的簡単に変換することができる。
【００１４】
本発明の情報処理装置では、前記判定手段は、前記第１名称がユニコード列であっても、当該第１名称の文字列がローカルコード列で表現可能であるか否かを判定する文字判定手段を有し、前記名称変換手段は、前記第１名称の文字列がローカルコード列で表現可能と判定された場合、当該第１名称の文字列をローカルコード列に変換して前記第２名称を生成する。
【００１５】
この発明によれば、第１名称の文字列がユニコード列であっても、当該第１名称の文字列がローカルコードで表現可能な場合は、名称変換手段により、当該第１名称の文字列をそのまま使ったローカルコード列に変換される。よって、このような一部の名称については、変換の際に、記憶媒体からインデックスを取得する処理などを省略できる。
【００１６】
本発明の情報処理装置では、前記第１名称はロングファイル名であり、前記第２名称はショートファイル名であって、前記判定手段は、さらに前記第１名称の文字数がショートファイル名形式の最大文字数以下であるか否かを判定する文字数判定手段を備え、前記名称変換手段は、前記第１名称の文字列がローカルコード列で表現可能と判定され、かつ前記第１名称の文字数が前記最大文字数以下である場合に、当該第１名称の文字列をローカルコード列に変換する。
【００１７】
この発明によれば、第１名称の文字列がローカルコード列で表現可能であり、かつ第１名称の文字数がショートファイル名形式の最大文字数以下の場合は、第１名称の文字列をそのまま使ってローカルコード列のショートファイル名に変換されて第２名称とされる。よって、このような一部の第１名称のショートファイル名形式への変換の際は、記憶媒体からインデックスを取得する処理などを省略できる。
【００１８】
本発明の情報処理装置では、前記ユニコードは複数バイト系文字コードであり、前記ローカルコードは１バイト系文字コードであって、前記文字判定手段は、ユニコードの文字の最下位１バイトの値が、当該文字をローカルコードで表現した１バイトの値に一致するか否かを直接又は間接的に判定し、前記名称変換手段は、前記文字判定手段が前記第１名称の各文字の最下位１バイトが当該各文字のローカルコードの値に一致したと判定した場合、前記ユニコードの文字の最下位１バイト以外の上位バイトを削除し、当該文字を前記最下位１バイトで表現することで前記ローカルコード列に変換する。
【００１９】
この発明によれば、第１名称がローカルコードで表現可能な文字列からなり、かつ第１名称の文字数がショートファイル名形式の最大文字数以下の場合は、第１名称の文字列を文字の最下位１バイトをそのまま使ってローカルコードのショートファイル名に変換して第２名称とする。よって、このような一部の第１名称のショートファイル名形式への変換の際は、記憶媒体からインデックスを取得する処理などを省略できる。
【００２０】
本発明の情報処理装置では、前記アプリケーション部に前記データ特定情報を渡した後、当該アプリケーション部からローカルコードの前記第２名称でアクセス位置を指定してアクセス要求を受け付けると、前記第２名称のローカルコード列を前記インデックスに逆変換する逆変換部を前記名称変換手段は備え、前記逆変換部による逆変換で得た前記インデックスで示される前記所在位置にアクセスして前記データ特定情報を取得し、当該データ特定情報に基づきアクセスしてデータを取得する。
【００２１】
この発明によれば、アプリケーション部からローカルコードの第２名称でアクセス位置を指定したアクセス要求を受け付けた場合に、第２名称のローカルコード列を逆変換してインデックスを取得し、そのインデックスで示された所在にアクセスすればデータ特定情報を取得できる。よって、データ特定情報に基づきアクセスすれば、要求されたデータを取得できる。
【００２２】
本発明は、記録媒体との接続機能を有する電子機器であって、上記発明の情報処理装置と、前記情報処理装置に記録媒体へのアクセスを要求するアプリケーション部と、を備えたことを要旨とする。この発明によれば、電子機器によって、上記情報処理装置の発明と同様の効果を得ることができる。
【００２３】
本発明の電子機器では、前記アプリケーション部は、前記記憶媒体の接続を検出すると、前記情報処理装置に対して前記記憶媒体からのデータ特定情報の取得を要求する。この発明によれば、情報処理装置の名称変換手段がデータ特定情報中のユニコードで表現された第１名称を比較的簡単にローカルコードに変換し、ローカルコード列の第２名称を含むデータ特定情報をアプリケーション部に渡すことができる。
【００２４】
本発明は、アプリケーション部からの要求に応じて電子機器に接続された記憶媒体にアクセスして取得したデータ特定情報を前記アプリケーション部に渡す処理をコンピューターに実行させるためのプログラムであって、コンピューターに、前記記憶媒体にアクセスして取得したデータ特定情報に含まれる第１名称が、ユニコードで表現されているか否かを判定する判定ステップと、前記ユニコードで表現されていると判定された場合に、前記第１名称のユニコード列を、ローカルコード列の第２名称に変換する名称変換ステップと、を実行させ、前記名称変換ステップでは、前記記憶媒体において前記データ特定情報の所在位置を示す一意なインデックスを前記ローカルコードに変換して前記第２名称を生成することを要旨とする。この発明によれば、コンピューターにプログラムを実行させることにより、上記情報処理装置の発明と同様の作用効果を得ることができる。
【００２５】
本発明は、アプリケーション部からの要求に応じて電子機器に接続された記憶媒体にアクセスして取得したデータ特定情報を前記アプリケーション部に渡す情報処理方法であって、前記記憶媒体にアクセスして取得したデータ特定情報に含まれる第１名称が、ユニコードで表現されているか否かを判定する判定ステップと、前記ユニコードであると判定された場合に、前記第１名称のユニコード列を、ローカルコード列の第２名称に変換する名称変換ステップと、を備え、前記名称変換ステップでは、前記記憶媒体において前記データ特定情報の所在位置を示す一意なインデックスを前記ローカルコードに変換して前記第２名称を生成する。この発明によれば、上記情報処理装置の発明と同様の作用効果を得ることができる。
【図面の簡単な説明】
【００２６】
【図１】一実施形態における複合機の斜視図。
【図２】複合機の電気的構成を示すブロック図。
【図３】アプリケーション部及びファイルシステムの機能構成を示すブロック図。
【図４】ディレクトリエントリー配列を示すブロック図。
【図５】変換後のファイル特定名称のデータ構造を示す模式図。
【図６】（ａ），（ｂ）ファイル特定名称の変換処理を説明する模式図。
【図７】アプリケーション処理を示すフローチャート。
【図８】ファイルシステム処理を示すフローチャート。
【図９】ファイル特定名称変換処理を示すフローチャート。
【図１０】ファイルアクセス処理を示すフローチャート。
【発明を実施するための形態】
【００２７】
以下、本発明を具体化した一実施形態を図１〜図１０に基づいて説明する。図１は、スキャナー機能を備えた複合機１１の斜視図である。電子機器の一例としての複合機１１は本体１２とカバー１３とを備える。本体１２の下側部分がプリンター部１４になっており、上側部分がスキャナー部１５になっている。プリンター部１４は、例えばインクジェット式の記録方式を採用する。本体１２の前側上段部には、操作パネル１７が設けられている。また、本体１２の前側下部には、印刷済みの用紙Ｐが排出される排紙部１８が設けられている。本体１２において排紙部１８の図１における右上位置には、メモリーカード１９を挿抜可能なカードスロット２０が設けられている。
【００２８】
図１に示すように、操作パネル１７には、その幅方向中央部に配置された表示部２１と、電源ボタン２２、モード選択ボタン２３、印刷／スキャンを開始するスタートボタン２４、選択ボタン２５等を含む操作部２６とが設けられている。
【００２９】
本実施形態の複合機１１では、モード選択ボタン２３の操作によって、「メモリーカード」「コピー」「スキャン」等を含む複数のモードのうち一つを選択できる。表示部２１には選択されたモードに対応するメニュー画面が表示され、選択ボタン２５等の操作により所望の印刷条件等の設定が可能になっている。ここで、「メモリーカード」モードは、カードスロット２０に挿着されたメモリーカード１９から読み取った画像データに基づき写真等の画像を印刷するときに用いられる。
【００３０】
図２は、複合機１１の電気的構成を示すブロック図である。複合機１１は、コンピューター３１（例えばマイクロコンピューター）を備える。コンピューター３１は、メモリーカードＩ／Ｆ３２を介して接続されたメモリーカード１９にアクセスする。また、コンピューター３１には、操作パネル１７の操作部２６と表示部２１が接続されている。さらにコンピューター３１は、スキャナー部１５にスキャニング動作を行わせるスキャンエンジン３３と、プリンター部１４に印刷動作を行わせるプリントエンジン３４とに接続されている。
【００３１】
コンピューター３１は、ＣＰＵ３５、ＡＳＩＣ３６（Application SpecificＩＣ）、ＲＯＭ３７、ＲＡＭ３８等を内蔵している。ＲＯＭ３７には、アプリケーション用のプログラム（例えば図７）や、ファイルシステム用プログラム（例えば図８〜図１０）、各種、各種処理に必要な設定データなどが記憶されている。ＣＰＵ３５はＲＯＭ３７から読み出したプログラム（例えばアプリケーション用プログラム）を実行して各種の処理を行う。コンピューター３１は、検出したメモリーカード１９にアクセスしてデータ特定情報の一例であるファイル情報ＦＩ（図３参照）を読み込んで登録する処理や、ファイル情報に基づいてメモリーカード１９内のファイルＦ（画像データ）を読み込む処理や、画像データに基づく画像の表示部２１への表示処理及び印刷処理などを実行する。
【００３２】
図３は、コンピューターにおいて、メモリーカードからファイル情報やファイルを読み込む処理を行う部分の機能構成ブロック図を示す。なお、図３ではメモリーカードＩ／Ｆ３２は省略されている。コンピューター３１は、ＣＰＵ３５がアプリケーション用プログラムを実行することで構築されるアプリケーション部４１と、ＣＰＵ３５がファイルシステム用プログラムを実行することで構築されるファイルシステム４２とを備える。
【００３３】
アプリケーション部４１は、カードスロット２０に挿着されたメモリーカード１９を検出したとき、表示部２１にメモリーカード１９中の画像を表示するとき、あるいは印刷対象のファイルＦ（画像データ）をメモリーカード１９から取得するときには、ファイルシステム４２を介してメモリーカード１９にアクセスする。すなわち、アプリケーション部４１がファイルシステム４２にアクセス要求を出すと、ファイルシステム４２はメモリーカード１９にアクセスしてその要求されたファイル情報ＦＩやファイルＦ（画像データ）を読み込み、その読み込んだファイル情報ＦＩ等をアプリケーション部４１へ送る。
【００３４】
アプリケーション部４１は、カウントアップ処理部４３、ファイル情報登録部４４及びファイル要求部４５を備える。また、ファイルシステム４２は、複数種のＦＡＴ５１〜５４等（ファイル・アロケーション・テーブル（File Allocation Table））と、ファイル名変換部６０とを備えている。本例では、複数種のＦＡＴ５１〜５４等として、「ＦＡＴ１２」、「ＦＡＴ１６」、「ＦＡＴ３２」及び「ｅｘＦＡＴ」などを備えている。
【００３５】
ファイル名変換部６０は、ファイル名やディレクトリ名などのファイル特定名称を、ユニコードのロングファイル名からローカルコードのショートファイル名に変換する文字コード変換処理を行う。この文字コード変換処理を行うために、ファイル名変換部６０は、図３に示すように、フォーマット形式判定部６１、カウンター６２、文字判定手段の一例である名称構成判定部６３、文字数判定手段の一例である文字数判定部６４、第１変換部６５、逆変換部の一例である第２変換部６６及びパス解析部６７を備えている。なお、本実施形態では、ユニコードで表現された変換前のファイル特定名称が第１名称に相当し、ローカルコードで表現された変換後のファイル特定名称が第２名称に相当する。また、フォーマット形式判定部６１、名称構成判定部６３及び文字数判定部６４により、判定手段の一例が構成される。さらに第１変換部６５及び第２変換部６６により、名称変換手段の一例が構成される。
【００３６】
カウントアップ処理部４３は、複合機１１に接続（つまりカードスロット２０に挿入）されているメモリーカード１９を検出すると、メモリーカード１９中の画像枚数（ファイル数）をカウントアップする。このとき、カウントアップ処理部４３はファイルシステム４２に対してファイル検索を要求する（図中（1））。ファイルシステム４２はファイル検索要求を受け付けると、メモリーカード１９にアクセスしてディレクトリエントリーを取得する（図中（2））。そして、ファイルシステム４２はディレクトリエントリー中のファイル情報ＦＩをアプリケーション部４１へ送る（図中（3））。このファイル情報ＦＩには、「ファイル名」、「拡張子」、「フルパスファイル名」、「作成時間」、「作成時刻」などファイルＦに関する各種情報が含まれている。なお、本実施形態では、ファイル名及びフルパスファイル名が、データ特定情報の一例に相当する。
【００３７】
ファイル情報登録部４４は、ファイルシステム４２から受け取ったファイル情報ＦＩを、ＲＡＭ３８に作成したファイルリストＦＬに登録する（図中（4））。このとき、ファイル情報登録部４４は、ファイル情報中のファイル名から複合機１１が印刷の対象とすることができる印刷対応のファイルであるか否かを判断し、印刷非対応のファイルのファイル情報は除去するので、ファイルリストＦＬには印刷可能なファイルのファイル情報ＦＩだけが登録される。カウントアップ処理部４３は、ファイル情報登録部４４がファイル情報を１つ登録する度に「１」ずつカウントアップし、ファイル情報の登録数、すなわちメモリーカード１９中で印刷可能な画像枚数をカウントする。こうしてＲＡＭ３８の所定記憶領域には、メモリーカード１９中のファイル情報ＦＩが登録されたファイルリストＦＬが作成される。
【００３８】
また、ファイル要求部４５は、メモリーカード１９内からファイルを取得する必要が生じた場合、その必要なファイルに係るファイル情報をファイルリストＦＬから読み出す（図中（5））。そして、ファイル要求部４５は、ファイルシステム４２に対してフルパスファイル名を指定してファイル読込要求を行う（図中（6））。
【００３９】
ファイルシステム４２は、ファイル読込要求を受け付けると、フルパスファイル名を手掛かりにメモリーカード１９内における指定のファイルにアクセスする（図中（7））。そして、ファイルシステム４２は、メモリーカード１９にアクセスして読み込んだファイルＦを、要求元のアプリケーション部４１へ送る（図中（8））。
【００４０】
本実施形態の複合機１１におけるアプリケーション部４１は、ローカルコードの一例としてのＡＳＣＩＩコードの文字符号化方式であるショートファイル名形式（「８．３形式」）に対応している。しかし、ユニコード（Unicode）の文字符号化方式の一例である「ＵＴＦ−１６（UCS/Unicode Transformation Format 16）」で扱われるロングファイル名形式には対応していない。しかし、ユニコード（本例ではＵＴＦ−１６）で表現されるロングファイル名形式でフォーマットされたメモリーカード１９が、カードスロット２０に挿入される場合もある。このため、図３に示すように、ファイルシステム４２が備える複数種のＦＡＴ５１〜５４等の中には、ＡＳＣＩＩコードで表現されるショートファイル名形式に対応する「ＦＡＴ１２」、「ＦＡＴ１６」、「ＦＡＴ３２」の他、ユニコード（ＵＴＦ−１６）で表現されるロングファイル名形式でフォーマットされたメモリーカード１９に対応可能な「ｅｘＦＡＴ」が追加されている。
【００４１】
ここで、ロングファイル名では、１文字が２バイトで表現される２バイト系文字コードであるユニコード（ＵＴＦ−１６）が使用され、最大２５５文字までのファイル名を設定できる。一方、ショートファイル名形式（８．３形式）では、１文字が１バイトで表現される１バイト系文字コードであるＡＳＣＩＩコードが使用され、ファイル名が８文字以下かつ拡張子が３文字以下の文字数に限られる。また、「ユニコード」では、英数字は上位１バイトに「００」（16進数）が付き、下位１バイトはその文字の「ＡＳＣＩＩコード」と同じ値をとる。また、「ＡＳＣＩＩコード」では「００」（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進数のコードで示している。
【００６１】
次に、アプリケーション部４１の処理及びファイルシステム４２の処理を図７〜図１０のフローチャートに従って説明する。図７は、アプリケーション部４１が行うアプリケーション処理を示すフローチャートである。また、図８は、ファイルシステム４２が行うファイルシステム処理を示すフローチャートである。以下、このアプリケーション処理を図７に従って説明する。なお、この処理は、複合機１１が電源オン状態にあるきにコンピューター３１が所定時間毎に実行する。
【００６２】
まずステップＳ１０では、メモリーカード１９を検出したか否かを判断する。新しいメモリーカードを検出した場合にステップＳ２０に進み、新しいメモリーカードを検出しなかった場合は当該処理を終了する。
【００６３】
ステップＳ２０では、ファイルシステム４２にファイル検索を要求する。
ステップＳ３０では、ファイル検索要求の応答としてファイルシステム４２からファイル情報ＦＩを順次取得する。
【００６４】
ステップＳ４０では、ファイルが適切であるか否かを判断する。詳しくは、アプリケーション部４１は、ファイル情報ＦＩからファイル名中の拡張子を取得し、取得した拡張子と、予め設定された設定拡張子とを比較し、取得した拡張子が設定拡張子と一致すればファイルが適切と判断し、一方、不一致であればファイルが不適切と判断する。本実施形態では、３文字の特定の拡張子が設定拡張子として設定されているので、設定拡張子以外の３文字の拡張子及び４文字以上の拡張子を含むファイルは不適切と判断される。ファイルが適切な場合はステップＳ５０に進み、ファイルが不適切な場合はステップＳ７０に進む。
【００６５】
ステップＳ５０では、ファイルリストＦＬにファイル情報を登録する。
次のステップＳ６０では、ファイル数をカウントアップする。
次のステップＳ７０では、全ファイル情報を取得したか否かを判断する。全ファイル情報を取得していなければ（否定判定の場合）、ステップＳ３０〜Ｓ７０の処理を繰り返してファイル情報ＦＩを順次取得し、各ファイル情報ＦＩに対して適切性の判断（Ｓ４０）、登録（Ｓ５０）、カウントアップ（Ｓ６０）等の処理を行う。そして、全ファイル情報を取得して、ステップＳ７０で全ファイル情報を取得したと判断すると、ステップＳ８０に進む。
【００６６】
ステップＳ８０では、ユーザーによるファイル選択操作があったか否かを判断する。ユーザーは印刷を目的としてメモリーカード１９内の画像データを選択する際は、操作部２６を操作してメモリーカード１９内の画像を表示部２１に表示させる。ユーザーがファイルを選択操作すると、その選択されたファイルの画像が表示部２１に表示される。そして、操作部２６を操作して表示部２１の画像を順番に切り替え、所望の画像が見つかると、その画像を印刷対象に決定する。このため、コンピューター３１は、操作部２６の操作でファイルが選択されると、その選択されたファイル（画像データ）をメモリーカード１９から読み込む必要がある。コンピューター３１は、ユーザーによるファイル選択操作があると（Ｓ８０で肯定判定）、ステップＳ９０に進む。なお、ファイル選択操作には、ユーザーが特定のファイルを選択する操作と、メモリーカード１９内の画像を先頭から順番に表示させる操作とがある。
【００６７】
ステップＳ９０では、ファイルシステム４２にファイルの読込要求を行う。
ステップＳ１００では、ファイルを取得したか否かを判断する。すなわち、アプリケーション部４１は、ファイルシステム４２からファイルＦを取得するまで待ち、ファイルＦを取得すると、ステップＳ１１０に進む。
【００６８】
ステップＳ１１０では、ファイルＦ（画像データ）に基づく画像の表示部２１への表示又は当該画像の印刷を行う。すなわち、ユーザーが操作部２６で選択したファイルに対応する画像を表示部２１に表示する。ユーザーは必要に応じて操作部２６を操作して表示部２１の画像を切り替えて、所望の画像があると印刷対象に決定する。また、表示部２１にサムネイル画像が表示される場合は、画像データが複合機１１側に読み込まれていないので、スタートボタン２４による印刷実行操作（Ｓ８０におけるファイル選択操作）が行われたときにファイル読込要求（Ｓ９０）を行って、ファイルを取得すると（Ｓ１００で肯定判定）、そのファイル（画像データ）に基づく画像の印刷を行う。
【００６９】
ファイルシステム４２は、このアプリケーション処理においてアプリケーション部４１から要求された処理を実行する。次に、ファイルシステム４２が実行するファイルシステム処理を図８に従って説明する。このファイルシステム処理は、コンピューター３１が例えばファイルシステム用プログラムを実行することにより行われる。
【００７０】
まずステップＳ２１０では、ファイル検索要求を受信したか否かを判断する。ファイルシステム４２はアプリケーション部４１からファイル検索要求があると、ステップＳ２２０に進み、ファイル検索要求がなければ当該処理を終了する。
【００７１】
ステップＳ２２０では、メモリーカード１９にアクセスしてフォーマット形式を判定する。すなわち、フォーマット形式判定部６１がメモリーカード１９からフォーマット情報を取得し、そのフォーマット情報を基づいてメモリーカード１９のフォーマット形式を判定する。
【００７２】
次のステップＳ２３０では、複数のＦＡＴ５１〜５４等のうち、判定したフォーマット形式に応じたＦＡＴを起動し、その起動したＦＡＴがディレクトリエントリーを取得する。
【００７３】
次のステップＳ２４０では、ファイル特定名称の変換処理を行う。前のＳ２３０で取得したディレクトリエントリー中のファイル情報ＦＩを取り出し、ファイル情報ＦＩに含まれるファイル名、又はフルパスファイル名の階層毎のディレクトリ名やファイル名からなる「ファイル特定名称」の変換処理を行う。この変換処理はファイル名変換部６０が行い、メモリーカード１９のフォーマット形式が例えば文字コードにユニコード（ＵＴＦ−１６）を用いるものであれば、ファイル特定名称を、ユニコード（ＵＴＦ−１６）で表現されたロングファイル名から、ローカルコード（ＡＳＣＩＩコード）で表現されたショートファイル名に変換する。フルパスファイル名を変換する場合は、階層毎の各ファイル特定名称に対してこの変換処理をそれぞれ行う。この変換処理は、コンピューター３１のファイル名変換部６０が図９に示すファイル特定名称変換処理ルーチンを実行することにより行われる。このファイル特定名称変換処理の詳細は後述する。
【００７４】
次のステップＳ２５０では、アプリケーション部４１にファイル情報ＦＩを送信する。例えばユニコード（ＵＴＦ−１６）のロングファイル名からローカルコード（ＡＳＣＩＩコード）のショートファイル名に変換されたファイル名及びフルパスファイル名を含むファイル情報ＦＩがアプリケーション部４１に送信される。
【００７５】
こうしてアプリケーション部４１へはショートファイル名形式のファイル情報ＦＩが送信される。その後、ユーザーが操作部２６でメモリーカード１９内のファイルの選択操作を行うと、ファイルシステム４２は、アプリケーション部４１からファイルアクセス要求（ファイル読込要求）を受け付ける。
【００７６】
ステップＳ２６０では、ファイルアクセス要求を受け付けたか否かを判断する。ファイルアクセス要求を受け付けていなければ待機し、ファイルアクセス要求を受け付ければ、ステップＳ２７０に進む。
【００７７】
ステップＳ２７０では、ファイルアクセス処理を行う。このとき、ファイルアクセス要求で指定されるフルパスファイル名は、ファイル名変換部６０によりユニコード（ＵＴＦ−１６）からローカルコード（ＡＳＣＩＩコード）に変換されている場合がある。特に、フルパスファイル名がインデックスをローカルコードに変換したものである場合がある。このため、フルパスファイル名をローカルコードからユニコードへ逆変換して、インデックスを取得する。そして、インデックスからアクセス先情報（クラスター位置情報ＣＰ）を取得し、その取得したクラスター位置情報に基づくクラスター位置にアクセスして、ファイルデータ（クラスタデータ）を取得する。このファイルアクセス処理は、コンピューター３１が図１０にフローチャートで示すファイルアクセス処理ルーチンを実行することにより行われる。このファイルアクセス処理の詳細は後述する。
【００７８】
そして、次のステップＳ２８０では、ファイル（クラスタデータ）をアプリケーション部４１に送信する。こうしてアプリケーション部４１は要求したファイルＦを取得する。そして、アプリケーション部４１は、そのファイル（画像データ）に基づく画像を表示部２１に表示する。又は、ユーザーが印刷すべき画像を確定してスタートボタン２４を操作すると、プリンター部１４はファイル（画像データ）に基づく画像を用紙Ｐに印刷する。
【００７９】
次に、図８におけるファイルシステム処理におけるファイル特定名称変換処理（Ｓ２４０）と、ファイルアクセス処理（Ｓ２８０）の詳細を、図９及び図１０を用いて説明する。まずファイル特定名称変換処理を図９に従って説明する。なお、図９において登場する「Ｊ」とは、ファイル特定名称を構成する文字列において先頭から何番目の文字であるかを示す数字である。
【００８０】
また、図９では、メモリーカード１９がユニコード（ＵＴＦ−１６）のロングファイル名形式」でフォーマットされており、ユニコードのロングファイル名形式のファイル特定名称を、ローカルコード（ＡＳＣＩＩコード）のショートファイル名形式に変換する場合の処理を示す。
【００８１】
まずステップＳ３１０では、初期値Ｊ＝１を設定する。
次のステップＳ３２０では、Ｊ番目の文字が存在するか否かを判断する。ファイル特定名称が例えば５文字の場合、６文字の文字は存在しない。この場合、１文字目（Ｊ＝１）から５文字目（Ｊ＝５）までは存在すると判断し、６文字目（Ｊ＝６）は存在しないと判断する。また、ファイル特定名称がファイル名である場合、拡張子との間の「」（ドット）が存在しても、文字列の終端に達して文字が存在しないと判断する。Ｊ番目の文字が存在すればステップＳ３３０に進み、Ｊ番目の文字が存在しなければステップＳ３６０に進む。
【００８２】
ステップＳ３３０では、Ｊ番目の文字が英数字であるか否かを判断する。詳しくは、ユニコード（ＵＴＦ−１６）において英数字は上位１バイトが「００」（16進数）なので、上位１バイトが「００」であるか否かを判断する。英数字であれば、Ｊをインクリメントし（Ｊ＝Ｊ＋１）、次の文字に移行する。
【００８３】
ステップＳ３４０では、Ｊ＞８であるか否かを判断する。つまり、ショートファイル名形式（８．３形式）で許される文字数は最大８文字以下なので、ファイル特定名称が８文字を超えるか否かを判断する。Ｊ＞８が成立した場合はステップＳ３５０に進み、Ｊ＞８が不成立の場合はステップＳ３２０に戻る。
【００８４】
こうしてステップＳ３２０〜Ｓ３５０の処理を繰り返し、各文字が全て英数字のまま８文字を超える前に文字列の終端に達した場合、つまり各文字が全て英数字でかつ文字数が８文字以内の場合（Ｓ３２０で否定判定）は、ステップＳ３６０に進む。一方、英数字でない文字が１文字でも含まれていた場合（Ｓ３３０で否定判定）と、文字数が８文字を超えた場合（Ｓ３５０で肯定判定）は、ステップＳ３７０に進む。
【００８５】
ステップＳ３６０では、文字毎に上位１バイト「００」を削除し、下位１バイトを文字数分配列することで、英数字だけからなる８文字以下のファイル特定名称を、ローカルコード（ＡＳＣＩＩコード）のショートファイル名に変換する。このように英数字だけからなる８文字以下のファイル特定名称は、同じ英数字がそのまま使われた同一文字列のショートファイル名に変換される。
【００８６】
一方、英数字以外の文字を１文字でも含んだり、文字数が８文字を超えたりして、そのままの文字を使ってショートファイル名に変換できない場合は、ステップＳ３７０及びステップＳ３８０の各処理が行われることで、文字列の変更を伴ってショートファイル名に変換される。
【００８７】
まずステップＳ３７０では、ディレクトリエントリー配列のインデックスを取得する。ファイルシステム４２は、ＦＡＴ５４（ｅｘＦＡＴ）を介してメモリーカード１９にアクセスし、ディレクトリエントリー配列のインデックスを取得する。例えば図６（ａ）の例のように、ｒｏｏｔ直下のファイル「あ．ＪＰＧ」のファイル情報ＦＩを取得しようとする場合、ディレクトリエントリー配列のインデックス［１］を取得する。また、例えば図６（ｂ）の例のように、ｒｏｏｔ直下のディレクトリ「い」の下位階層のファイル「あ．ＪＰＧ」のファイル情報ＦＩを取得しようとしたとする。この場合、図４に示すように、ディレクトリ「い」に対応するディレクトリエントリー配列のインデックス［２］と、そのサブディレクトリ中のファイル「あ．ＪＰＧ」に対応するディレクトリエントリー配列のインデックス［０］を取得する。
【００８８】
次のステップＳ３８０では、インデックスを７桁のＩＤとしてＡＳＣＩＩコードで表現し、先頭に識別コード「ＦＦ」を付与して、ショートファイル名形式のファイル特定名称を生成する。図６（ａ）の例では、ディレクトリエントリー配列のインデックス［１］を７桁のＩＤ「0000001」（10進数）とし、これをＡＳＣＩＩコードに変換して「30303030303031」（16進数）を取得する。そして、先頭に特別ファイル名であることを示す識別コードを置き、この下位に「30303030303031」（16進数）を付加して、ＡＳＣＩＩコードで表現されたショートファイル名「FF30303030303031」（16進数）を生成する。よって、図６（ａ）に示すようなショートファイル名形式のフルパス名「root\FF30303030303031」を取得できる。
【００８９】
また、図６（ｂ）の例では、ディレクトリ「い」に対応するディレクトリエントリー配列のインデックス［２］を７桁のＩＤ「0000002」とし、これをＡＳＣＩＩコードに変換して「30303030303032」（16進数）を取得する。そして、先頭に特別ファイル名であることを示す識別コードを置き、この下位に、「30303030303032」を付加して、ＡＳＣＩＩコードで表現されたショートファイル名形式のディレクトリ名「FF30303030303032」（16進数）を生成する。次に下位階層のサブディレクトリ中のファイル「あ．ＪＰＧ」に対応するディレクトリエントリー配列のインデックス［０］を７桁のＩＤ「0000000」とし、これをＡＳＣＩＩコードに変換して「30303030303030」（16進数）を取得する。そして、先頭に特別ファイル名であることを示す識別コードを置き、この下位に、「30303030303030」を付加して、ＡＳＣＩＩコードで表現されたショートファイル名形式のファイル名「FF30303030303030」（16進数）を生成する。よって、図６（ｂ）に示す例ではショートファイル名形式のフルパス名「root\FF30303030303032\FF30303030303030.JPG」を生成する。なお、図６の例では、ファイル特定名称に相当するディレクトリ名及びファイル名のみを１６進数のコードで示している。実際は、英数字の拡張子もＡＳＣＩＩコードに変換される。
【００９０】
複合機１１が複数のカードスロット２０を備えているが、複数枚のメモリーカード１９が挿着されているときは、先に挿着された一方のみを認識し、その認識中の先のメモリーカード１９が抜き取られたら、その時点で後から挿着された挿着中のメモリーカード１９を認識することになるので、同時に複数のメモリーカード１９を認識することはない。よって、ファイル名変換部６０によって生成されたフルパス名は一意の名称（コード）になっている。
【００９１】
そして、ステップＳ３９０では、全てのファイル特定名称の変換を終了したか否かを判断する。全てのファイル特定名称の変換を終了していなければ（Ｓ３９０で否定判定）、処理対象を次のファイル特定名称に切り替え（ステップＳ４００）、次のファイル特定名称を対象にステップＳ３１０〜Ｓ３８０の処理を同様に行う。例えば複数階層からなるフルパスファイル名である場合、階層毎のファイル特定名称にそれぞれステップＳ３１０〜Ｓ３８０の処理を行う。そして、ファイル情報ＦＩに含まれる全てのファイル特定名称の変換を終了すると（Ｓ３９０で肯定判定）、ステップＳ４００に進む。
【００９２】
ステップＳ４１０では、ファイル情報ＦＩをアプリケーション部４１に送信する。よって、ファイルシステム４２からアプリケーション部４１へは、フルパスファイル名及びファイル名がローカルコード（ＡＳＣＩＩコード）のショートファイル名形式に変換されたファイル情報ＦＩが送られる。この結果、ショートファイル名形式にしか対応していなくても、アプリケーション部４１は受け取ったファイル情報ＦＩ中のファイル名及びフルパスファイル名を解読でき、適切なファイル情報ＦＩだけをファイルリストＦＬに登録できる。
【００９３】
次にファイルアクセス処理を図１０に従って説明する。ファイルシステム４２は、アプリケーション部４１からファイル読込要求を受け付けると、ファイルアクセス処理を実行する。このファイル読込要求で指定されたフルパスファイル名中の最上位階層（ｒｏｏｔ直下の階層）のファイル特定名称（図６（ａ）の例ではファイル名、図６（ｂ）の例ではディレクトリ名）を１回目の処理対象として取得する。なお、このファイルアクセス処理は、コンピューター３１がファイルシステム用プログラム中のファイルアクセス用プログラムを実行することにより行われる。
【００９４】
ステップＳ５１０では、特別ファイル名であるか否かを判断する。すなわち、ファイル特定名称の先頭に識別コード「ＦＦ」（16進数）が存在するか否かを判断する。例えば図６（ａ）に示すショートファイル名「FF30303030303031」（16進数）の場合は、先頭に「ＦＦ」が存在するので、特別ファイル名と判断される。また、図６（ｂ）に示すショートファイル名「FF30303030303032」（16進数）の場合も、先頭に「ＦＦ」が存在するので、特別ファイル名と判断される。特別ファイル名において先頭の識別コード以外の文字列は、インデックスを示している。このような特別ファイル名であった場合はステップＳ５２０に進む。なお、ここでいう「特別ファイル名」とは、先頭が識別コードでそれ以外の文字列がインデックスを示すファイル名とディレクトリ名の総称である。
【００９５】
一方、ファイル特定名称が特別ファイル名でない場合はステップＳ５４０に進む。ここで、特別ファイル名でないファイル特定名称とは、例えば図４においてディレクトリエントリー配列のインデックス［０］にあるファイルのように８文字以下の英数字からなるファイル名が変換されたものなどが含まれる。この場合、英数字「Ａ」はＡＳＣＩＩコードで「４１」（16進数）なので、この場合、識別コード「ＦＦ」が存在せず、特別ファイル名ではないと判断される。特別なファイル名でない場合はステップＳ５４０に進む。
【００９６】
ステップＳ５２０では、文字列になっているインデックスを数値に変換（逆変換）する。例えば特別ファイル名「FF30303030303031」（16進数）は、インデックス［１］に逆変換される。この逆変換は第２変換部６６が行う。
【００９７】
ステップＳ５３０では、ディレクトリエントリーから、先に変換したインデックスに保存されているクラスター位置情報ＣＰを取得する。例えばインデックス［１］のときは、図４におけるインデックス［１］のファイル「あ．ＪＰＧ」のディレクトリエントリー構造体ＤＣ中のクラスター位置情報ＣＰを取得する。この処理は、パス解析部６７が行う。
【００９８】
一方、ステップＳ５４０では、ＡＳＣＩＩからＵＴＦ−１６に変換する。例えば文字「Ａ」の１バイト系文字コードであるＡＳＣＩＩコードで示された「４１」（16進数）を、２バイト系文字コードであるユニコード（ＵＴＦ−１６）で示された「００４１」（16進数）に変換する。この変換後のユニコードの文字列はフルパスファイル名のうち第１階層のファイル特定名称（ディレクトリ名又はファイル名）を示している。
【００９９】
そして、次のステップＳ５５０では、文字列比較しながらディレクトリエントリーを検索し、指定のファイル特定名称（ディレクトリ名又はファイル名）に該当するクラスター位置情報ＣＰを取得する。例えば文字列「Ａ．ＪＰＧ」であれば、この文字列と一致する文字列のディレクトリエントリーを検索し、検索したディレクトリエントリーが指し示すディレクトリエントリー構造体ＤＣ（図４参照）内のクラスター位置情報ＣＰを取得する。
【０１００】
ステップＳ５６０では、クラスターデータにアクセスする。すなわち、メモリーカード１９におけるクラスター位置情報ＣＰで示されたクラスター位置（クラスター番号）にアクセスしてクラスターデータを読み出す。
【０１０１】
ステップＳ５７０では、ディレクトリの階層回数繰り返したか否かを判断する。ディレクトリの階層回数繰り返していなければ、ステップＳ５８０で次の階層へ移行した後、ステップＳ５１０に戻る。そして、複数階層の場合は、次の階層でもステップＳ５１０〜Ｓ５６０の処理を同様に繰り返す。そして、ディレクトリの全階層で取得した全てのクラスター位置からクラスターデータを取得することで、最終的にファイル（画像データ）を取得する。
【０１０２】
こうしてファイルアクセス処理を終わると、取得したファイルＦはファイルシステム４２からアプリケーション部４１へ送られる（図８におけるＳ２８０、図３における（8））。そして、アプリケーション部４１は、ファイルに基づく画像を表示部２１に表示させたり、ファイルに基づく画像をプリンター部１４により用紙Ｐに印刷したりする。
【０１０３】
以上詳述したように、本実施形態では、以下に示す効果を得ることができる。
（１）ファイル名変換部６０（名称変換手段）により、アプリケーション部４１が解読不能なユニコードで表現されたファイル特定名称（第１名称）を、アプリケーション部４１が解読可能なローカルコードで表現されたファイル特定名称（第２名称）に変換できる。このとき、ファイル名変換部６０は、メモリーカード１９においてフルパスファイル名（データ特定情報）の所在位置を示すディレクトリエントリー配列の一意なインデックスをローカルコードに変換してショートファイル名形式のファイル特定名称（第２名称）を生成する。よって、アプリケーション部４１が解読不能なユニコードを扱う形式でフォーマットされたメモリーカード１９へのアクセスを要求する場合でも、アクセスして取得したファイル情報中のファイル特定名称を、アプリケーション部４１が解読可能なローカルコードに比較的簡単に変換することができる。例えば特許文献２のファイル管理モジュールのように変換テーブルを設ける必要がない。
【０１０４】
（２）ファイルシステム４２が備えたファイル名変換部６０がファイル特定名称をロングファイル名形式からショートファイル名形式に変換するので、アプリケーション部４１はファイルシステム４２から受け取ったファイル情報に含まれるフルパスファイル名やファイル名（データ特定情報）を適切に解析できる。
【０１０５】
（２）文字列を１文字ずつ解析し、ローカルコード（ＡＳＣＩＩコード）で表現可能な文字であるか否かを判定し、ローカルコードで表現可能な８文字以下のファイル特定名称については、そのまま文字を使ってローカルコードに変換する。このため、常にインデックスＩを用いたローカルコードに変換する構成に比べ、ファイル名変換部６０における変換処理の負担を軽減できるとともに、ファイル情報を格納するために必要なＲＡＭ３８の格納領域を少なく抑えることができる。
【０１０６】
（３）ファイル名変換部６０は１文字ずつ解析（判定）し、上位１バイトが「００」（16進数）であるか否かを判定することで、対象文字が１バイト系のＡＳＣＩＩコードで表現可能な文字（英数字）であるか否かを判定する。上位１バイトを削除して下位１バイトを文字数分配列すればＡＳＣＩＩコードに変換できるので、簡単にＡＳＣＩＩコードに変換できる。
【０１０７】
（４）ファイル名変換部６０は文字数が８文字以内であるか否かを判定し、対象文字が１バイトにしてもＡＳＣＩＩコードで表現可能な文字（英数字）であって、かつ文字数が８文字以下であれば、ショートファイル名形式に変換可能であると判定する。よって、ショートファイル名形式に変換可能であるかどうかを適切に判定することができる。
【０１０８】
（５）ＡＳＣＩＩコードに変換できない文字を含む場合は、ディレクトリエントリー配列のインデックスをＡＳＣＩＩコードに変換してショートファイル名形式（８．３形式）のファイル特定名称を生成する。よって、一意なショートファイル名を生成することができる。
【０１０９】
（６）文字をそのままＡＳＣＩＩコードに変換した場合は、各文字の１バイト値の上位に１バイト「００」を付加すれば、ユニコード（ＵＴＦ−１６）のフルパスファイル名に変換できる。そして、フルパスファイル名の階層毎のファイル特定名称からディレクトリエントリーを検索すれば、クラスター位置情報を取得することができる。また、ディレクトリエントリー配列のインデックスを用いた場合は、逆変換することで取得できるインデックスに保存されているクラスター位置情報ＣＰを取得できる。よって、いずれの変換方法の場合も、アプリケーション部４１からファイル読込要求のあったファイルＦをメモリーカード１９から取得し、アプリケーション部４１に渡すことができる。
【０１１０】
（７）複合機１１は、ファイル名変換部６０を内蔵するファイルシステム４２を備えるので、アプリケーション部４１は、ファイルシステム４２がユニコードに対応する形式でフォーマットされたメモリーカード１９にアクセスして取得したデータ特定情報（フルパスファイル名やファイル名）を解読することができる。
【０１１１】
なお、上記実施形態は以下のような形態に変更することもできる。
・ユニコードを１文字当たりのバイト数で規定した複数バイト系文字コードは、２バイト系に限定されず、３バイト系、４バイト系、５バイト系以上であってもよい。また、２バイトと３バイトが混在するなど、異なるバイト数の文字が混在する文字集合となったマルチバイト系でもよい。また、バイト数が可変の構成でもよい。例えば３バイト系において、上位２バイトが「００００」（16進数）であれば、上位２バイトを削除して、最下位１バイトを使ってその文字のローカルコードに変換する構成も採用できる。
【０１１２】
・文字構成判定部は、上位１バイトが「００」（16進数）であるか否かを判定することで、その下位１バイトの値が、ローカルコードであるＡＳＣＩＩコードの１バイト値に一致するか否かを間接的に判定したが、直接判定してもよい。例えば上位１バイトが「００」であっても、文字によっては下位１バイトがその文字のローカルコードの１バイト値に一致しない場合があるときには、下位１バイトがその文字のローカルコードの１バイト値に一致するか否かまで判定することで、下位１バイトとローカルコードの値の一致を直接判定する構成でもよい。
【０１１３】
・インデックスはディレクトリエントリー配列のインデックスに限定されない。情報処理装置（例えばファイルシステム）が独自に一意のインデックスを付してもよい。この場合、データ特定情報の所在位置を示す所在情報（ディレクトリ）とインデックスとの対応関係を示す参照テーブルを作成しておけば、その参照テーブルを参照してインデックスから所在情報を取得し、データ特定情報で示された位置にアクセスしてデータ本体（ファイルＦ）を取得できる。
【０１１４】
・インデックスは数字に限定されない。一意な文字又は文字列であれば任意に設定してよい。例えばローカルコードで使用できる英字や制御記号などの文字や文字列を採用できる。
・英数字のみからなるファイル特定名称についても、インデックスをローカルコードに変換してもよい。つまり、ファイル特定名称は常にインデックスをローカルコードに変換する構成とすることもできる。
【０１１５】
・１バイト系文字コードはＡＳＣＩＩコードに限定されず、Ｓｈｉｆｔ  ＪＩＳ、ＥＣＵ（Extended Unix Code）、ISO/IEC 646、ISO/IEC 8859などでもよい。
・ユニコード（Unicode）の文字符号化方式は、ＵＴＦ−１６に限定されない。ＵＴＦ−８やＵＴＦ−３２、ＵＴＦ−７、ＵＴＦ−ＥＢＣＤＩＣ、ＳＣＳＵ（Standard Compression Scheme for Unicode）、ＢＯＣＵ−１（Binary Ordered Compression for Unicode）などでもよい。
【０１１６】
・２バイト系文字コードから１バイト系文字コードへの変換に限定されない。例えば３バイト系文字コード又は４バイト系文字コードから２バイト系文字コードへ変換する構成でもよい。
【０１１７】
・ファイル名変換部６０のうちフォーマット形式判定部６１以外の各部６２〜６７を有する変換モジュール（情報処理装置）を、アプリケーション部４１とファイルシステム４２との間に介在させた構成も採用できる。この場合、変換モジュールは、ファイルシステムから受け取ったディレクトリエントリー配列のインデックスをローカルコードに変換することで第２名称を生成すればよい。この構成であっても、アプリケーション部４１は、データ特定情報中のユニコードで表現された第１名称を、ローカルコードの第２名称として取得できる。
【０１１８】
・メモリーカード１９にファイルの書き込みを行ってもよい。例えば複合機１１がメモリーカードから読み込んだ画像データに加工（トリミング、複数画像の合成処理など）を施した後、この加工後の画像データを別ファイルとしてメモリーカード１９に書き込む構成も採用できる。
【０１１９】
・記憶媒体はメモリーカードに限定されず、他の可搬性（リムーバブル）の記録媒体であってもよい。例えば、ＣＤ（コンパクトディスク）やＤＶＤ（Digital Versatile Disk）などの光ディスク、ＭＯ（光磁気ディスク）、ＵＳＢフラッシュメモリー、リムーバブルハードディスク等でもよい。
【０１２０】
・前記各実施形態では、スキャナー機能を備えたカラーインクジェット式のプリンター部１４が採用されているが、ワイヤインパクト式記録装置、熱転写式記録装置、電子写真式記録装置等の記録装置を採用してもよい。また、これらの記録装置は、モノクロ記録装置を採用してもよい。また、スキャナー機能を備えない記録装置を採用してもよい。
【０１２１】
・前記各実施形態では、記録装置の一例である複合機に適用したが、記録装置にも限定されない。例えばプロジェクター、テレビ、デジタルフォトフレーム、デジタルカメラ、オーディオ機器などの電子機器に広く適用できる。
【符号の説明】
【０１２２】
１１…電子機器の一例としての複合機、１９…記録媒体の一例であるメモリーカード、２０…カードスロット、３１…コンピューター、３２…メモリーカードＩ／Ｆ、３５…ＣＰＵ、３６…ＡＳＩＣ、３７…ＲＯＭ、３８…ＲＡＭ、４１…アプリケーション部、４２…情報処理装置としてのファイルシステム、４３…カウントアップ処理部、４４…ファイル情報登録部、４５…ファイル要求部、５１〜５４…ＦＡＴ、６０…ファイル名変換部、６１…判定手段を構成するフォーマット形式判定部、６２…カウンター、６３…判定手段を構成するとともに文字判定手段の一例としての名称構成判定部、６４…判定手段を構成するとともに文字数判定手段の一例としての文字数判定部、６５…第１変換部、６６…逆変換部の一例としての第２変換部、６７…パス解析部、ＦＬ…ファイルリスト、ＦＩ…データ特定情報の一例であるファイル情報、Ｆ…データの一例であるファイル、ＣＰ…データ特定情報の所在位置にあるアクセス位置情報の一例としてのクラスター位置情報、ＤＥ…データ特定情報の所在位置の一例としてのディレクトリエントリー、Ｉ…一意なインデックスの一例としてのディレクトリエントリー配列のインデックス、Ｐ…媒体としての用紙。
【図１】
2011216048.tif 000003
【図２】
2011216048.tif 000004
【図３】
2011216048.tif 000005
【図４】
2011216048.tif 000006
【図５】
2011216048.tif 000007
【図６】
2011216048.tif 000008
【図７】
2011216048.tif 000009
【図８】
2011216048.tif 000010
【図９】
2011216048.tif 000011
【図１０】
2011216048.tif 000012