(57)【要約】【課題】シークの可能な位置がファイルオープン時のファイルの範囲内に制限されるファイルシステムに対しても、ファイルの拡張部分へのシークを比較的簡単な手法で可能にする。【解決手段】ファイルオープン後、ライトを指示してデータをファイルに書き込む。この書込みにより拡張したファイルの拡張部分を指定するシークをして書込みをするに先立って、まず拡張部分へのシークが不可能なファイルシステムを搭載する未対応機種であるか否かを判断し（S130）、さらに拡張部分への書込みがあるか否かを判断する（S140）。未対応機種であって、かつ拡張部分への書込みがある場合は、ファイルを開き直す指示を出す（S150，S160）。ファイルを開き直した後、拡張部分を指定するシークを行い（S170）、引き続きデータをファイルへ書込むライトを指示する（S180）。【選択図】図５
2007213253.tif 000002
【特許請求の範囲】
【請求項１】
ファイルシステムに対して所定のファイル処理を指示する電子機器におけるファイル処理方法であって、
オープンを指示してファイルを開くオープンステップと、
開いているファイルへデータを書き込むライトを指示する書込ステップと、
ファイルのクローズとオープンを順次指示してファイルを開き直す開き直しステップと、
ライト又はリードを開始する位置を指定するシークを指示するシークステップと、
前記シークで指定された位置を開始位置とするライト又はリードを指示する処理指示ステップと、
クローズを指示してファイルを閉じるクローズステップとを備え、
前記ファイルシステムがシークで指定可能な位置が、ファイルオープン時のファイルの範囲内に制限されるものである場合において、前記書込ステップによるデータの書込みによってファイルサイズが拡張した時点と、ファイルの拡張部分の位置からライト又はリードを開始するための前記シークステップを実行する時点との間の時点において、前記開き直しステップを行うことを特徴とする電子機器におけるファイル処理方法。
【請求項２】
請求項１に記載の電子機器におけるファイル処理方法において、
少なくともファイルを拡張する可能性の在る前記書込ステップに引き続いて、もしくは少なくとも前記拡張部分の位置を指定するものである可能性の在る前記シークステップへ引き続くように、前記開き直しステップを実行することを特徴とする電子機器におけるファイル処理方法。
【請求項３】
請求項１に記載の電子機器におけるファイル処理方法において、
前記書込ステップと前記開き直しステップとの間に、前記開き直しステップの処理を行う必要があるか否かを判断する判断ステップをさらに備え、前記判断ステップで前記開き直しステップの処理を行う必要があると判断された場合に限り、前記開き直しステップを行うことを特徴とする電子機器におけるファイル処理方法。
【請求項４】
請求項３に記載の電子機器におけるファイル処理方法において、
前記判断ステップでは、シークすべき位置が前記拡張部分になるか否かを判断し、当該判断ステップで前記シークすべき位置が前記拡張部分になると判断した場合に前記開き直しステップの処理を行うことを特徴とする電子機器におけるファイル処理方法。
【請求項５】
請求項３又は４に記載の電子機器におけるファイル処理方法において、
前記判断ステップは、前記シークを試みる試行ステップを含み、
前記試行ステップの結果、前記ファイルシステムからシーク不可応答を受け付けた場合に前記開き直しステップの処理を行うことを特徴とする電子機器における処理方法。
【請求項６】
請求項４に記載の電子機器におけるファイル処理方法において、
前記判断ステップでは、前記オープンステップと前記書込みステップでの指示の応答として前記ファイルシステムから取得したサイズ情報に基づき、シークすべき位置が拡張部分になるか否かを判断することを特徴とする電子機器におけるファイル処理方法。
【請求項７】
請求項３に記載の電子機器におけるファイル処理方法において、
前記拡張部分へのシークが不可能であるか否かを判断する判断ステップをさらに備え、
前記判断ステップで前記拡張部分へのシークが不可能であると判断された場合に、前記開き直しステップの処理を行うことを特徴とする電子機器におけるファイル処理方法。
【請求項８】
請求項７に記載の電子機器におけるファイル処理方法において、
前記判断ステップでは、前記拡張部分へのシークが不可能な電子機器であるか否かを判断することを特徴とする電子機器におけるファイル処理方法。
【請求項９】
ファイルシステムに対して所定のファイル処理を指示する電子機器におけるファイル処理装置であって、
オープンを指示してファイルを開くオープン手段と、
開いているファイルへデータを書き込むライトを指示する書込手段と、
ファイルのクローズとオープンを順次指示してファイルを開き直すファイル開き直し手段と、
ライト又はリードを開始する位置を指定するシークを指示するシーク手段と、
前記シークで指定された位置を開始位置とするライト又はリードを指示する処理指示手段と、
クローズを指示してファイルを閉じるクローズ手段とを備え、
前記ファイルシステムがシークで指定可能な位置が、ファイルオープン時のファイルの範囲内に制限されるものである場合において、前記書込手段によるデータの書込みによってファイルサイズが拡張した時点と、ファイルの拡張部分の位置からライト又はリードを開始するために前記シーク手段がシークを指示する時点との間の時点において、前記開き直し手段によるファイルの開き直しを行うことを特徴とする電子機器におけるファイル処理装置。
【請求項１０】
前記制限のある電子機器と前記制限のない電子機器とに用いられる可能性のあるファイル処理装置において、前記ファイル開き直し手段による処理の必要がある電子機器か否かを判断する判断手段をさらに備え、
前記ファイル開き直し手段は、前記判断手段により前記ファイル開き直し手段による処理が必要であると判断された場合にファイルを開き直すことを特徴とする請求項９に記載の電子機器におけるファイル処理装置。
【請求項１１】
オープン中のファイルに対して処理の開始位置を指定するシークの可能な位置が、ファイルオープン時のファイルの範囲内に制限されるファイルシステムと、請求項９又は請求項１０に記載のファイル処理装置とを備えたことを特徴とする電子機器。
【請求項１２】
電子機器が有するコンピュータに、ファイルシステムに対して所定のファイル処理を実行させるためのプログラムであって、
前記コンピュータに、
オープンを指示してファイルを開くオープンステップと、
開いているファイルへデータを書き込むライトを指示する書込ステップと、
ファイルのクローズとオープンを順次指示してファイルを開き直す開き直しステップと、
ライト又はリードを開始する位置を指定するシークを指示するシークステップと、
前記シークで指定された位置を開始位置とするライト又はリードを指示する処理指示ステップと、
クローズを指示してファイルを閉じるクローズステップとを実行させ、
前記ファイルシステムがシークで指定可能な位置が、ファイルオープン時のファイルの範囲内に制限されるものである場合において、前記書込ステップによるデータの書込みによってファイルサイズが拡張した時点と、ファイルの拡張部分の位置からライト又はリードを開始するための前記シークステップを実行する時点との間の時点において、前記開き直しステップを実行することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子機器に備えられたファイルシステムに書込処理や読込処理などの指示を出して所望のファイル処理を行わせる電子機器におけるファイル処理方法、ファイル処理装置、電子機器及びプログラムに関する。
【背景技術】
【０００２】
従来、携帯電話機などの電子機器にはファイルを扱えるようにファイルシステムが備えられ、例えばアプリケーションがファイルにアクセスするときにはファイルシステムを介して行われる（例えば特許文献１）。ファイルシステムは、ＯＳ（オペレーティングシステム）の一部としてあるいはＯＳとは別に設けられる。ファイルシステムは、ファイルのオープン（OPEN）、リード（READ）、ライト（WRITE）、クローズ（CLOSE）などのファイル処理に必要な基本的な処理を行う。例えば電子機器に搭載されたアプリケーションでファイルを扱う所定の処理を行うときにはファイルシステムに対して、オープン、リード、ライト、クローズなどの指示（システムコール）を送り、ファイルシステムはその指示された所定のファイル処理を行う。
【０００３】
また、ファイルシステムでは、リードやライト等の受け付けた指示の開始位置をファイルポインタで管理している。ファイルポインタは、例えばリードやライトの指示が行われた場合、その読込みや書込みの行われたデータサイズ分移動するので、前から順番にデータを読み込んだり書き込んだりする場合は、リードやライトを順次指示すればよい。しかし、処理の都合上、次の処理の開始位置を前へ戻したり後へ飛ばしたりする必要がある場合は、ファイルポインタを移動させるためにシーク（SEEK）と呼ばれる指示が行われる。
【０００４】
なお、特許文献１に記載の記憶制御装置は、ファイルをオープンした後、データの書込みが終了してもファイルをクローズせず、またファイルをオープンした後、データを読み出しが終了しても、ファイルをクローズしない。これにより、補助記憶装置をいわゆるリングバッファのように用いて、順次書込み及び読み出しを行え、転送速度を高めることができる構成であった。
【特許文献１】特開２０００−２５９３６６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、従来、携帯電話機などでは機種の違い（メーカーの違い含む）によって搭載されるファイルシステムの仕様が異なっていた。例えば特殊なタイミングでシークを指示すると、シークが受け付けられない仕様があった。例えばシークで指定できる位置がファイルオープン時のファイルの範囲（先頭から末尾までの範囲）内に制限される仕様のファイルシステムが存在した。
【０００６】
図７は、この種のファイルシステムでシーク処理を行った場合、シークできない例を示すものである。図７（ａ）は、ファイルオープンしたファイルを示す。このファイルは例えばファイルサイズ「ｍバイト」とする。
【０００７】
次にはオープン中のファイルにデータの書込みを行うと、図７（ｂ）に示すように、ファイルサイズが拡張してファイルの先頭からmバイト目より後側にファイルの拡張部分ができる。
【０００８】
そして、書き込んだデータの末尾と異なるｋバイト目の位置が次のデータの書込位置であるとすると、次に図７（ｃ）に示すように、ｋバイト目の位置を指定するシークを行うことになる。しかし、同図に示すように、ｋバイト目の位置がファイルの拡張部分である場合は、シークを行っても、シーク不可応答（エラー応答）が返ってきてしまい、シークを行うことができなかった。
【０００９】
このようにシーク制限のある仕様のファイルシステムを搭載する携帯電話機には、この種のシーク制限がない仕様のファイルシステムを搭載する携帯電話機向けに開発されてきたアプリケーションがそのままでは使用できなくなる。この場合、シーク未対応の機種にも対応できるように、アプリケーションプログラムのアルゴリズムを大幅に変更するなどの手直しが必要となる。例えば拡張部分内の書込開始位置からデータを書き込むためには、まずシーク可能な位置から書込開始位置までのデータをすべて読み込み、その読み込んだデータと書込むべきデータとをバッファ上で一つにまとめ、前記シーク可能な位置を指定してシークを行った後、そのまとめたデータをそのシークした位置から書き込むという手順（アルゴリズム）が必要になる。この手順をとると、アルゴリズムの大幅な変更が伴い、アプリケーションプログラムの開発工数及び検査工数が増大するとともに、アプリケーション側の負担が増大するという問題がある。
【００１０】
本発明は、上記問題点を解決するためになされたものであって、その目的は、シークの可能な位置がファイルオープン時のファイルの範囲内に制限されるファイルシステムに対しても、ファイルの拡張部分へのシークを比較的簡単な手法で可能にする電子機器におけるファイル処理方法、ファイル処理装置、電子機器及びプログラムを提供することにある。
【課題を解決するための手段】
【００１１】
上記目的を達成するため、本発明は、ファイルシステムに対して所定のファイル処理を指示する電子機器におけるファイル処理方法であって、オープンを指示してファイルを開くオープンステップと、開いているファイルへデータを書き込むライトを指示する書込ステップと、ファイルのクローズとオープンを順次指示してファイルを開き直す開き直しステップと、ライト又はリードを開始する位置を指定するシークを指示するシークステップと、前記シークで指定された位置を開始位置とするライト又はリードを指示する処理指示ステップと、クローズを指示してファイルを閉じるクローズステップとを備え、前記ファイルシステムがシークで指定可能な位置が、ファイルオープン時のファイルの範囲内に制限されるものである場合において、前記書込ステップによるデータの書込みによってファイルサイズが拡張した時点と、ファイルの拡張部分の位置からライト又はリードを開始するための前記シークステップを実行する時点との間の時点において、前記開き直しステップを行うことを要旨とする。なお、書込ステップでは、ライトが少なくとも１回行われ、ライトが複数回行われた場合、シークステップにおける拡張部分とは、それまでのライトによって拡張したすべての部分を指す。また、ライトが複数回行われる場合、ライト間にリード等の他の指示を行うステップが入ってもよい。また、拡張部分とは、ファイルオープン時のファイルの後側に拡張された部分である。
【００１２】
これによれば、まずオープンステップにおいてオープンを指示することでファイルが開かれる。次に、書込みステップにおいて、ライトを指示して、開かれたファイルにデータが書き込まれる。この結果、例えばファイルサイズが大きくなってファイルは拡張する。そして、ファイルシステムがシークで指定可能な位置が、ファイルオープン時のファイルの範囲内に制限されるものである場合において、開き直しステップが行われる。この開き直しステップでは、クローズとオープンをこの順で順次指示し、ファイルを開き直す。この結果、シークが可能な範囲、すなわちファイルシステム内でファイルポインタを移動させることができる範囲が拡張され、拡張部分を含む全範囲に渡りシークが可能になる。この後、シークステップにおいて、ファイルの拡張部分を指定するシークが行われる。そして、処理指示ステップでは、リード又はライトを指示する。
【００１３】
このようにファイルシステムがシークで指定可能な位置が、ファイルオープン時のファイルの範囲内に制限されるものである場合において、書込ステップによるデータの書込みによってファイルサイズが拡張した時点と、ファイルの拡張部分の位置からライト又はリードを開始するためのシークステップを実行する時点との間の時点において、開き直しステップは行われる。よって、この種のファイルシステムに対しても、開き直しステップを追加するだけで、その他のアルゴリズムは例えば一切変更することなく、拡張部分へのシークが可能になる。例えば、拡張部分へのシークが可能なファイルシステム向けに開発されたプログラムを、開き直しステップの追加だけで他のアルゴリズムを変更することなく流用することが可能になる。
【００１４】
また、本発明の方法に依らず、他の方法で拡張部分を開始位置とするリード又はライトを可能にするには、シーク可能な位置からライト開始位置までのデータを読み込んで、その読み込んだデータとライトすべきデータとをバッファ上で一つにまとめ、そのまとめたデータをファイルに書き込む方法が考えられる。しかし、この方法では、開始位置より前に存在するデータを読み込む処理、バッファ上でデータを一つにまとめる処理などの追加や、そのために必要な容量をバッファに確保する必要があるなど、アルゴリズムの大きな変更やアプリケーション側の処理負担の増加などを余儀なくされる。これに対し、本発明は、ファイルを開き直す処理を追加するだけで、他のアルゴリズム等は特に変更しなくても拡張部分の位置を指定するシークが可能になる。例えば、拡張部分へのシーク不可能な制限のある電子機器とシーク可能な制限のない電子機器とが存在する場合、電子機器毎に個別のアルゴリズムを採用したり、複雑かつ処理負担の増すアルゴリズムを採用して共通化を図ったりする必要がなく、比較的簡単な共通のアルゴリズムの使用や、一方のアルゴリズムを少し改変した他方へのアルゴリズムの流用を実現することができる。
【００１５】
また、本発明のファイル処理方法では、少なくともファイルを拡張する可能性の在る前記書込ステップに引き続いて、もしくは少なくとも前記拡張部分の位置を指定するものである可能性の在る前記シークステップへ引き続くように、前記開き直しステップを実行することが好ましい。
【００１６】
これによれば、開き直しステップは、少なくともファイルを拡張する可能性の在る前記書込ステップに引き続いて実行されるか、もしくは少なくとも前記拡張部分の位置を指定するものである可能性の在る前記シークステップへ引き続くように実行される。よって、拡張部分をもつファイルに対してシークを指示したり、拡張部分の位置を指定するシークの可能性があったりするシークステップを行う際には、拡張部分の位置を指定するシークが可能となっている。例えば開き直しステップを行うべきか否かを判断するなどの必要がない。
【００１７】
また、本発明のファイル処理方法では、前記書込ステップと前記開き直しステップとの間に、前記開き直しステップの処理を行う必要があるか否かを判断する判断ステップをさらに備え、前記判断ステップで前記開き直しステップの処理を行う必要があると判断された場合に限り、前記開き直しステップを行うことが好ましい。
【００１８】
これによれば、書込ステップの後、開き直しステップの前に、判断ステップが行われ、開き直しステップの処理を行う必要があるか否かが判断される。そして、判断ステップで前記開き直しステップの処理を行う必要があると判断された場合に、開き直しステップでファイルの開き直しが行われる。よって、開き直しステップの処理を行う必要がある場合に限りファイルの開き直しを行えばよく、余分な処理を極力回避できる。
【００１９】
また、本発明のファイル処理方法では、前記判断ステップでは、シークすべき位置が前記拡張部分になるか否かを判断し、当該判断ステップで前記シークすべき位置が前記拡張部分になると判断した場合に前記開き直しステップの処理を行うことが好ましい。
【００２０】
これによれば、判断ステップでは、シークすべき位置が拡張部分になるか否かが判断される。そして、シークすべき位置が拡張部分になると判断された場合に限り、ファイルの開き直しが行われる。よって、余分な処理を極力回避できる。
【００２１】
また、本発明のファイル処理方法では、前記判断ステップは、前記シークを試みる試行ステップを含み、前記試行ステップの結果、前記ファイルシステムからシーク不可応答を受け付けた場合に前記開き直しステップの処理を行うことが好ましい。
【００２２】
これによれば、判断ステップは、まず試行ステップでシークが試みられる。試行ステップの結果、ファイルシステムからシーク不可応答を受け付けた場合に開き直しステップの処理が行なわれる。例えば、シークすべき位置が拡張部分かどうかを予めアルゴリズムからは判断できない場合でも、必要なときにだけ開き直しステップを行うことができる。
【００２３】
また、本発明のファイル処理方法では、前記判断ステップでは、前記オープンステップと前記書込みステップでの指示の応答として前記ファイルシステムから取得したサイズ情報に基づき、シークすべき位置が拡張部分になるか否かを判断することが好ましい。
【００２４】
これによれば、オープンステップではファイルシステムからオープン指示の応答としてオープン時のファイルサイズ情報を取得する。また、書込みテップではファイルシステムからライト指示の応答として書き込んだデータサイズ情報を取得する。判断ステップでは、両サイズ情報に基づいて、シークすべき位置が拡張部分になるか否かが判断される。例えば、オープン時のファイルサイズよりも大きなデータサイズのデータがシークすべき位置よりも前に書き込まれれば、シークすべき位置が拡張部分になると判断できる。この場合、判断ステップの前に一旦書き込んだデータを読み出すリードの指示で取得したデータに含まれるサイズ情報を併せて用いて判断してもよい。よって、開き直しステップを行う必要があるか否かを事前に判断できるので、余分な開き直しステップを極力回避できる。
【００２５】
また、本発明のファイル処理方法では、前記判断ステップでは、前記拡張部分へのシークが不可能であるか否かを判断し、前記判断ステップで前記拡張部分へのシークが不可能であると判断された場合に、前記開き直しステップの処理を行うことが好ましい。
【００２６】
これによれば、判断ステップでは、拡張部分へのシークが不可能であるか否かが判断される。拡張部分へのシークが不可能である場合は、開き直しステップが行われる。一方、拡張部分へのシークが不可能でない場合は、開き直しステップが行われない。このように拡張部分へのシークが不可能であるかどうかを判断することで、開き直しステップが必要であるか否かを事前に判断できるので、余分な開き直しステップを極力回避できる。
【００２７】
また、本発明のファイル処理方法では、前記判断ステップでは、前記拡張部分へのシークが不可能な電子機器であるか否かを判断することが好ましい。
これによれば、判断ステップでは、拡張部分へのシークが不可能な電子機器であるか否かが判断される。拡張部分へのシークが不可能な電子機器である場合は、開き直しステップが行われる。一方、拡張部分へのシークが不可能な電子機器でない場合は、開き直しステップが行われない。このように電子機器の情報（例えば電子機器の種類・機種等）から開き直しステップが必要であるか否かを事前に判断できるので、余分な開き直しステップを極力回避できる。
【００２８】
また、本発明は、ファイルシステムに対して所定のファイル処理を指示する電子機器におけるファイル処理装置であって、オープンを指示してファイルを開くオープン手段と、開いているファイルへデータを書き込むライトを指示する書込手段と、ファイルのクローズとオープンを順次指示してファイルを開き直すファイル開き直し手段と、ライト又はリードを開始する位置を指定するシークを指示するシーク手段と、前記シークで指定された位置を開始位置とするライト又はリードを指示する処理指示手段と、クローズを指示してファイルを閉じるクローズ手段とを備え、前記ファイルシステムがシークで指定可能な位置が、ファイルオープン時のファイルの範囲内に制限されるものである場合において、前記書込手段によるデータの書込みによってファイルサイズが拡張した時点と、ファイルの拡張部分の位置からライト又はリードを開始するために前記シーク手段がシークを指示する時点との間の時点において、前記開き直し手段によるファイルの開き直しを行うことを要旨とする。このファイル処理装置の発明によれば、上記ファイル処理方法の発明と同様の効果を得ることができる。
【００２９】
また、本発明のファイル処理装置では、前記制限のある電子機器と前記制限のない電子機器とに用いられる可能性のあるファイル処理装置において、前記ファイル開き直し手段による処理の必要がある電子機器か否かを判断する判断手段をさらに備え、前記ファイル開き直し手段は、前記判断手段により前記ファイル開き直し手段による処理が必要であると判断された場合にファイルを開き直すことが好ましい。
【００３０】
これによれば、書込手段によるライトの指示の後、シーク手段によるシーク指示の前に、判断手段はファイル開き直し手段による処理の必要がある電子機器か否かを判断する。ファイル開き直し手段による処理の必要がある電子機器と判断された場合は、ファイル開き直し手段によってファイルの開き直しが行われる。一方、ファイル開き直し手段による処理の必要がある電子機器と判断されなかった場合は、ファイル開き直し手段によるファイルの開き直しが行われない。よって、余分なファイル開き直し処理を極力回避できる。
【００３１】
本発明は、電子機器であって、オープン中のファイルに対して処理の開始位置を指定するシークの可能な位置が、ファイルオープン時のファイルの範囲内に制限されるファイルシステムと、上記発明のファイル処理装置とを備えたことを要旨とする。これによれば、上記発明のファイル処理装置を備えているので、上記発明と同様の効果を得ることができる。
【００３２】
また、本発明は、電子機器が有するコンピュータに、ファイルシステムに対して所定のファイル処理を実行させるためのプログラムであって、前記コンピュータに、オープンを指示してファイルを開くオープンステップと、開いているファイルへデータを書き込むライトを指示する書込ステップと、ファイルのクローズとオープンを順次指示してファイルを開き直す開き直しステップと、ライト又はリードを開始する位置を指定するシークを指示するシークステップと、前記シークで指定された位置を開始位置とするライト又はリードを指示する処理指示ステップと、クローズを指示してファイルを閉じるクローズステップとを実行させ、前記ファイルシステムがシークで指定可能な位置が、ファイルオープン時のファイルの範囲内に制限されるものである場合において、前記書込ステップによるデータの書込みによってファイルサイズが拡張した時点と、ファイルの拡張部分の位置からライト又はリードを開始するための前記シークステップを実行する時点との間の時点において、前記開き直しステップを実行することを要旨とする。このプログラムの発明によれば、上記発明と同様の効果を得ることができる。
【発明を実施するための最良の形態】
【００３３】
以下、本発明を具体化した一実施形態を図１〜図５に従って説明する。図１は、本実施形態に係る携帯電話機の外観を示す正面図である。
携帯電話機１０は、電話機能（通話機能）及び無線通信機能の他、電子メール機能、ブラウザ機能、静止画や動画を撮像するカメラ機能等を備えている。
【００３４】
携帯電話機１０は、本体１０ａと、該本体１０ａに対して開閉可能に連結されたカバー部１０ｂとを有している。本体１０aの内面上には、入力ボタン１１が設けられている。入力ボタン１１には、電話番号入力又は文字入力のために操作される複数の操作ボタン１２、項目を選択するための選択キー１３（十字キー）、決定ボタン１４などがあり、その他、電源ボタン、電子メールボタン、インターネットボタン（ブラウザボタン）、カメラボタンなど各種機能が割り当てられた各種ボタンが含まれる。また、カバー部１０ｂの内面上には、表示部１５（ディスプレイ）が備えられている。携帯電話機１０には各種アプリケーションが搭載され、表示部１５の画面にはアプリケーションで扱われる各種画像やテキストなどが表示される。
【００３５】
図２は、携帯電話機の電気的構成を示すブロック図である。
携帯電話機１０は、ＣＰＵ２１、ＲＯＭ２２、ＲＡＭ２３、通信部２４、入力ボタン１１、表示部１５、リムーバブルメモリインターフェイス（以下、リムーバブルメモリＩＦ２５を記す）を備える。通信部２４は、公衆電話回線網と接続できる所定周波数帯域の電波を送受信できるアンテナおよび通信回路を備え、通話、電子メールおよびインターネットを可能にする。また、通信部２４は、赤外線通信やBluetooth(R)などの近距離無線通信部も備える。
【００３６】
リムーバブルメモリＩＦ２５は、携帯電話機１０の本体１０ａに挿着されたリムーバブルメモリ２６と接続される。リムーバブルメモリ２６は増設メモリとして機能し、携帯電話機１０が取り扱う各種データなどが記憶される。また、携帯電話機１０は、ＯＳ（オペレーティングシステム）および携帯電話機の機能として必要な各種プログラムがＲＯＭ２２に格納されている。なお、例えば携帯電話機１０内のＲＯＭ２２には、ＯＳ内あるいはＯＳとは別にファイルシステムを構築するファイルシステム用プログラムが記憶されており、またリムーバブルメモリ２６には画像編集機能を有するアプリケーションプログラムが記憶されている。
【００３７】
図３は、携帯電話機における機能ブロック図である。すなわち、ＣＰＵがファイルシステム用プログラムおよびアプリケーションプログラムを実行することにより構築される機能ブロック図である。
【００３８】
同図に示すように、携帯電話機１０は、ファイルシステム３０と、ファイル編集システム４０とを備えている。ファイル編集システム４０は、アプリケーションプログラムであるファイル編集用プログラムをＣＰＵ２１が実行することにより携帯電話機１０内に構築される。ファイルシステム３０は、ファイル管理部３５（本例ではリムーバブルメモリ２６）に格納されているファイルを管理し、ファイル編集システム４０がファイル管理部３５にアクセスする場合はファイルシステム３０を介して行う。  ファイル編集システム４０は、ファイルシステム３０が管理するファイルを呼び出して、呼び出したファイルに対して編集処理を行う。編集処理としては、１つの画像データに他の画像データを貼り付けて合成する処理、あるいは画像データにテキストデータを貼り付けて合成する処理などが挙げられる。前者の場合、フレーム画像に写真画像を貼り付ける合成処理が挙げられ、後者の場合、画像データに、住所・氏名などのテキストデータを貼り付ける合成処理が挙げられる。本実施形態では、特に携帯電話機１０で編集した画像データ（編集データ）をプリンタに送信してハガキなどの用紙に携帯電話機１０で編集した編集画像（例えば年賀状用の画像）を印刷でき、この画像編集処理をアプリケーションが行う。フレーム画像は、例えば通信部２４を介してインターネットに接続してメーカーやソフトサービス会社のサーバが提供するものをダウンロードして入手する。写真画像は、携帯電話機１０のカメラ機能を用いて撮像した写真やデジタルカメラで撮像した写真データをリムーバブルメモリ２６に記憶させてこれを携帯電話機１０に挿着することで取得する。
【００３９】
ファイル編集システム４０は、入力制御部４１、ファイル要求部４２及び編集処理部４３を備える。入力制御部４１は入力ボタン１１からの入力を受け付け、例えば画像データの選択・取得のための操作入力、文字入力、その他各種の指示入力などを受け付ける。編集処理部４３は、入力制御部４１が受け付けた指示に基づき、複数の画像データを合成したり、画像データとテキストデータを合成したりするなどの編集処理を行う。ファイル要求部４２は、ファイルシステム３０に対してシステムコールを発行し、ファイルに関する所定の処理を指示する。システムコールには、オープン（OPEN）、クローズ（CLOSE）、リード（READ）、ライト（WRITE）、シーク（SEEK）などがある。ファイル編集システム４０は、ファイルシステム３０からシステムコールに対する返り値を受け取り、この返り値に基づき、指示した処理の成功・失敗などを判断する。なお、本実施形態では、OPEN、CLOSE、READ、WRITE、SEEKなどのシステムコールは、ライブラリ関数も含む広い概念のファイル操作関数を指す。
【００４０】
ファイルシステム３０は、制御部３１とＦＡＴ管理部３２とバッファ３３を備える。制御部３１は、ファイル編集システム４０からファイル名で指定されたファイルを開くオープン（OPEN）のシステムコールを受け付けると、これに応答してファイル管理部３５にアクセスして指定のファイルを読み込んでバッファ３３上に開くオープン処理を行う。また、ファイル編集システム４０からリード（READ）のシステムコールを受け付けると、これに応答してバッファ３３上のファイルから指定のデータをファイル編集システム４０に読み込ませるリード処理を行う。さらにファイル編集システム４０からライト（WRITE）のシステムコールを受け付けると、これに応答してバッファ３３上のファイルに指定されたデータを書き込むライト処理を行う。また、ファイル内の位置を指定するシーク（SEEK）のシステムコールを受け付けると、ファイルポインタを指定された位置に移動させるシーク処理を行う。その後、リードまたはライトのシステムコールを受け付けたときには、SEEKによって移動させた新たなファイルポインタの位置から、指定のデータの読込みまたは書込みを開始するように構成されている。
【００４１】
本実施形態のファイルシステム３０はＦＡＴファイルシステムであり、ＦＡＴ管理部３２はＦＡＴ（ファイルアロケーションテーブル（File Allocation Tables））を管理している。ＦＡＴは、ファイルが格納管理されているファイル管理部３５（本例ではリムーバブルメモリ２６）に格納されるファイルの位置と順番を把握するために参照され、リムーバブルメモリ２６上のファイルの物理的位置を記録したテーブルである。ファイルシステム３０の制御部３１は、オープン処理やクローズ処理等を行うときに、ＦＡＴ管理部３２のＦＡＴを参照する。制御部３１は、ファイル管理部３５からファイルを読み出したりファイル管理部３５にファイルを書き込んだりするときは、ＦＡＴ管理部３２のＦＡＴを参照する。
【００４２】
ファイルシステム３０では、リムーバブルメモリ２６は非常に多数の小さなクラスタに分割して管理され、ファイルは小さなピースに分割されて、それぞれ別々のクラスタに格納して保存される。ＦＡＴは、クラスタ内で各ファイルの状態を把握でき、新しいファイル作成時やデータ書込み時は、割り当てのないクラスタを見つけることができる情報を制御部３１に提供する。ファイルを読み出すときは、制御部３１はＦＡＴ管理部３２のＦＡＴを参照してそのファイルのピースを組み立て直して閲覧できるようにする。
【００４３】
図４は、アプリケーションで処理しているファイルの構造を示す。図４（ａ）はファイルオープン時のファイル構造を示す。同図（ａ）に示すように、ファイルは、例えば先頭から順番にデータＡ、データＢ、データＣ、データＤの４種類のデータが配置されたファイル構造をとる。先頭のデータＡは、ヘッダ情報とそのデータサイズ情報からなり、ヘッダ情報には印刷レイアウト情報など印刷属性情報が含まれている。また、データＢはサムネイル画像サイズ(単位:BYTE)、データＣはサムネイル画像データ(形式:ｊｐｇ)、データＤはその他のデータである。
【００４４】
本実施形態のファイルシステムにおいては、ファイルオープン時のファイルサイズが「ｍバイト」であるとすると、SEEKで指定できる位置は、先頭「０バイト目」から末尾「ｍバイト目」までの範囲内に制限される。
【００４５】
本実施形態では、ファイルを開き、予めファイルからデータＡ〜Ｄをファイル先頭から順番に読み出す。データＡのうちファイル先頭（０バイト目）からヘッダ情報のデータサイズ、ヘッダ情報を順番に読み込み、ｂバイト目から「サムネイル画像サイズ」（データＢ）を読み込む。さらにｃバイト目の位置からサイズ分、「サムネイル画像データ」（データＣ）を読み込む。サイズ情報がデータの前に配置された図４（ａ）に示すようなファイル構造となっているので、「サイズ取得」→「データ取得」の順番で読み取りが自然に行えるようになっている。
【００４６】
読み出したデータＣであるサムネイル画像を編集して再びファイル内の元の位置に書き込む一連の処理を行う。例えば画像と画像を合成したり画像とテキストを合成したりして得た編集画像を、表示部１５の画面上で確認できるように、編集画像のサムネイル画像を作成する。このデータ編集処理において、図４（ａ）〜（ｆ）の各処理が順次行われる。ここで、ファイルオープン時のファイルを構成する各データＡ〜Ｄの先頭位置を、それぞれ順に０バイト目、ｂバイト目、ｃバイト目、ｄバイト目とする。また、データＡ，Ｂ，Ｃ，Ｄに編集等の変更が加えられて再びファイルに書き込むときのデータを、それぞれデータＡo，Ｂo，Ｃo，Ｄoと表記している。なお、データを読み込んだ後、ファイルは一旦閉じられ、編集処理後にファイルを開いて各データＡ〜Ｄに替えて各データＡo〜Ｄoを書き込むようにしている。もちろん、データを読み込むときに開いたファイルをオープンのままとし、オープン中のそのファイルに各データＡo〜Ｄoを書込んでもよい。
【００４７】
図４（ｂ）は、ファイルオープン時のファイル（図４（ａ））に、編集又は変更されたデータＡo，Ｂo，Ｃo，Ｄoをファイル先頭から順番に書き込んだファイル構成を示す。ここで、データＡoを構成するヘッダ情報の中にはデータが増減する可能性があるものが含まれている。本実施形態では、データＡoは、例えば印刷レイアウト等の印刷属性情報が追加されるなど元のデータＡに比べデータ容量がかなり増大し、ファイルオープン時のファイル末尾（ｍバイト目）を超えるまで増加して書き込まれる場合がある。この場合、後続のデータＢo，Ｃo，Ｄoは、ファイルオープン時のファイルの末尾（ｍバイト目）を超えた拡張部分Ｅに書き込まれることになる。
【００４８】
次のデータＢoは、ダミーの「サムネイル画像サイズ」であり、データＡoの末尾であるｐバイト目から書き込まれる。つまり、データＢoは拡張部分Ｅへダミーで書き込まれる。次のデータＣoは、「サムネイル画像データ」であり、データＢoの末尾であるｑバイト目から書き込まれる。さらにデータＤoがデータＣoの末尾であるｒバイト目から書き込まれる。なお、ファイルポインタはWRITE（又はREAD）を受け付けたときには、書き込んだバイト数分（又は読み込んだバイト数分）進められる。このため、ファイルの先頭側から順番に書込みが行われる場合は、ファイルポインタを移動させるSEEKを発行する必要がない。
【００４９】
このようにダミーの「サムネイル画像サイズ」（データＢo）を事前に書き込むのは、メモリ節約のためにサムネイル画像のｊｐｇ形式への圧縮は直接ファイルに書き込みながら行われ、圧縮されたサムネイル画像サイズ（データサイズ）は、実際に圧縮してみるまで分からないからである。このため、後で書き込む正確なサムネイル画像サイズ（データＢｔ）の書込み領域を確保するためにダミーのデータを書き込んでいる。
【００５０】
図４（ｃ）ではシーク可否判断を行う。サムネイル画像データ（データＣo）の書込み後に分かる正確なサムネイル画像サイズ（データＢt）はｐバイト目から書き込むことになるが、ファイルポインタを最後に書き込んだデータＤoの末尾であるｎバイト目から、ｐバイト目に移動させるSEEKを行う必要がある。このとき、図４（ｃ）に示すようにデータＢoの先頭位置であるｐバイト目が、拡張部分Ｅ内に位置する場合は、SEEKを行うことができない。これは、本例の仕様のファイルシステム３０では、SEEKで指定できる位置が、ファイルオープン時のファイルの範囲内に制限されるからである。
【００５１】
図４（ｄ）は、ファイルを開き直したファイル構造を示す。システムコールでCLOSEを発行した後にOPENを発行してファイルを開き直す。
図４（ｅ）では、拡張部分Ｅ内のｐバイト目を指定してシークが行われる。ファイルを開き直した後は、元の拡張部分Ｅ内のｐバイト目を指定するシークが可能となる。このため、ｐバイト目を指定するSEEKの発行によって、ファイルポインタはｐバイト目に移動する。
【００５２】
図４（ｆ）では、正確なサムネイル画像サイズ（データＢt）を書き込む。つまり、図４（ｂ）の書込処理で実際に書き込んだサムネイル画像サイズを、SEEKされたｐバイト目の位置から書き込む。
【００５３】
なお、データＡの書込みは、ファイル先頭側からダミーのヘッダ情報サイズとヘッダ情報とが順番に書き込まれ、データＡo〜Ｄoの書込み後にシークして正確なヘッダ情報サイズの書込みが行われる。このときのシークは拡張部分Ｅ内の位置を指定するものではないので、ファイルの開き直し処理の前と後のどちらで行ってもよい。もちろん、ヘッダサイズ情報の前に位置する他のデータがサイズ増大の可能性が高く、ヘッダ情報サイズを書込むためにシークする位置が拡張部分Ｅ内になる可能性が少しでもある場合は、シークはファイル開き直し処理の後に行うとよい。
【００５４】
図５は、ファイル処理を示すフローチャートである。同図は、ファイル編集システム４０がファイルシステム３０にシステムコールで指示を出してデータをファイルに書き込む書込み処理を示している。なお、同図では書込処理を中心に示し、その前に行われる読込処理については省略している。また、以下の説明では、OPEN等のシステムコールを発行することを、単にOPENを発行するという表現を使って説明する。なお、本実施形態のファイルシステム３０は、前述のように、ファイルオープン時のファイルの範囲内にSEEKができる位置が制限される構成となっている。
【００５５】
ステップＳ１１０では、ファイルオープンを行う（オープンステップ）。つまり、ファイルシステム３０に対してファイルを指定してOPENを発行する。このOPENを受け付けたファイルシステム３０では、ファイルオープン処理が行われる（ステップＳ２１０）。すなわち、ＦＡＴ管理部３２のＦＡＴを参照して指定のファイルを構成する各ピースが格納されたクラスタを調べ、ファイル管理部３５内における各クラスタから読み込んだピースを組み立て直してバッファ３３上にファイルを開く。ファイルは、本例では図４（ａ）に示すように４種類のデータＡ，Ｂ，Ｃ，Ｄを含むファイル構造をしており、そのファイルサイズは「ｍバイト」である。前述のように、データＡはヘッダ情報とそのデータサイズ、データＢは「サムネイル画像データサイズ（byte）」、データＣは「サムネイル画像データ（ｊｐｇ）」、データＤは「その他のデータ」である。データＡは、データ量が大きく増減する可能性のあるデータと想定する。なお、このオープンステップを実行するＣＰＵ２１によりオープン手段が構成される。
【００５６】
次のステップＳ１２０では、書込処理を行う（書込ステップ）。ここでは、例えばファイルサイズが拡張されるような書込処理である。ファイル編集システム４０は、ファイルに書き込みをするためにファイルオープン時のデータＡ，Ｂ，Ｃ，Ｄに替わる４種類のデータＡo、Ｂo、Ｃo、Ｄoを予め用意しており、これらのデータＡo〜Ｄoをファイルに１データずつ順番に書き込むWRITEをファイルシステム３０に対して複数回発行する。ファイルシステム３０は、ステップＳ２２０において、ファイル編集システム４０から発行されたWRITEを受け付けた順番に、データＡo〜Ｄoをバッファ３３上のファイルに書き込む。なお、この書込ステップを実行するＣＰＵ２１により書込手段が構成される。
【００５７】
図４（ｂ）に示すように、この例では、データＡのデータサイズが増えており書込み後のデータＡoの末尾は、ファイルオープン時のファイルの末尾（ｍバイト目）を超えている。このため、データＢo、Ｃo、Ｄoはｍバイト目よりも後側に書き込まれ、ファイルの拡張部分Ｅに位置する。ここで、データＢoは、ダミーのサムネイル画像サイズであり、後（Ｓ１８０）で正確なサムネイル画像データサイズに書き替えられる。ｊｐｇ形式であるデータＣo（サムネイル画像データ）は、メモリ節約のためにファイルへ書き込みながら圧縮される。このため、書き込み終了時に正確なサムネイル画像サイズが分かる。正確なサムネイル画像サイズは、データＣoをファイルに書き込むWRITEを発行した際にファイルシステム３０から返り値として返されるので、そのサムネイル画像サイズのデータＢtをダミーのデータＢoに置き換える書き込みを後で行うことになる。
【００５８】
ステップＳ１３０では、未対応機種であるか否かを判断する（判断ステップ）。すなわち、拡張部分を指定するSEEKができるシーク対応機種か、拡張部分にSEEKができないシーク未対応機種かを判断する。未対応機種であればステップＳ１４０に進み、未対応機種でなければ（つまり対応機種であれば）ステップＳ１７０に進む。なお、機種情報は、ＲＯＭ２２に予め記憶されており、ＲＯＭ２２から読み出して取得する。
【００５９】
次のステップＳ１４０では、拡張部分への書込みがあるか否かを判断する（判断ステップ）。つまり、これから書き込もうとするデータＢt（さらにはデータＡoを構成するヘッダ情報サイズも含む）の書込開始位置が拡張部分Ｅ内に位置するか否かを判断する。拡張部分への書込みがあればステップＳ１５０に進み、拡張部分への書込みがなければステップＳ１７０に進む。なお、拡張部分への書込みの有無は、ステップＳ１１０でOPENを発行したときにその返り値として取得したファイルサイズ（ｍバイト）及び、ステップＳ１２０でWRITEを発行したときにその返り値として取得したデータＡoのデータルサイズを用いて判断する。例えば、データＡoのデータサイズ（返り値）「ｐバイト」が、ファイルサイズ「ｍバイト」より大きい値（ｐ＞ｍ）であれば、データＡoの後に書き込まれるデータＢoの書込開始位置が拡張部分Ｅ内に位置すると判断できる。もちろん、書き込もうとするデータの書込開始位置よりも前に複数のデータが存在する場合は、複数のデータ全てのサイズを合計した値がファイルオープン時のファイルサイズを超えるか否かを判断することになる。この判断ステップ（Ｓ１３０，Ｓ１４０）を実行するＣＰＵ２１により判断手段が構成される。
【００６０】
ステップＳ１５０では、ファイルクローズを行う。すなわち、ファイルシステム３０に対してCLOSEを発行する。
ファイルシステム３０の制御部３１は、ＦＡＴ管理部３２のＦＡＴを参照してファイル管理部３５（リムーバブルメモリ２６）内の空き領域を検索し（ステップＳ２３０）、バッファ３３のファイルをファイル管理部３５内の引き当てた空き領域に書き込む（ステップＳ２４０）。そして、ファイルの格納位置を書き込んでＦＡＴを更新する（ステップＳ２５０）。こうしてＦＡＴには、書込処理によりファイルサイズが拡張したファイルのファイル情報が記録される。
【００６１】
ステップＳ１６０では、ファイルオープンを行う。つまり、ファイル要求部４２がファイルシステム３０に対してOPENを発行する。OPENを受け付けるとファイルシステム３０はオープン処理を行う。制御部３１はＦＡＴ管理部３２のＦＡＴを参照して指定のファイルの格納場所を調べ、ファイルをバッファ３３上に開く。このステップＳ１５０とステップＳ１６０の処理によってファイルが開き直しされる（開き直しステップ）。
【００６２】
よって、ファイルシステム３０のＦＡＴが更新された状態で開かれる。ファイルポインタを移動できる範囲は、ファイルオープン時に参照した更新後のＦＡＴ情報から決まるので、拡張部分Ｅを含むファイルオープン時のファイルの全範囲に広がる。このため、ファイルを開き直す前にはSEEKができなかった拡張部分Ｅ内の位置を指定するSEEKが可能になる。つまり、このファイルシステム３０では、SEEKにより指定されたファイル内の位置がＦＡＴ上のファイル情報に存在しなければSEEKエラーとなるが、バッファ３３上の更新されたＦＡＴ情報には拡張部分Ｅがファイル内の位置として存在することになるので、SEEKが可能になる。なお、この開き直しステップ（Ｓ１５０，Ｓ１６０）を実行するＣＰＵ２１によりファイル開き直し手段が構成される。
【００６３】
ステップＳ１７０では、ファイルシークを行う（シークステップ）。すなわち、ファイル要求部４２がファイルシステム３０に対してSEEKを発行する。このSEEKは、データＢoの書込開始位置である先頭からｐバイト目を指定して行われる。このSEEKを受け付けたファイルシステム３０は、ファイル内の指定された位置にファイルポンタを移動させるシーク処理を行う。このファイルポインタの位置が、次の読み取り又は書込み処理を開始する位置となる。なお、このシークステップを実行するＣＰＵ２１によりシーク手段が構成される。
【００６４】
ステップＳ１８０では、ファイル書込みを行う。つまり、ファイル要求部４２はファイルシステム３０に対してデータＢtをファイルへ書き込むWRITEを発行する。このWRITEを受け付けたファイルシステム３０は受け取ったデータＢtの書込処理を行う。この場合、バッファ３３上のファイルに対してpバイト目からデータＢtの書込みが行われる。こうして、ダミーのサムネイル画像サイズから正確なサムネイル画像サイズに書き替えられる。このステップＳ１８０は処理指示ステップに相当し、このステップを実行するＣＰＵ２１により処理指示手段が構成される。
【００６５】
なお、これより先にデータＡoを構成するヘッダ情報サイズもシークして書込みすることにより、ダミーのデータと置き換えられている。そして、ファイル編集システム４０からCLOSEが発行されることにより、ファイルを開き直した後に書き込んだバッファ３３上のファイルが、ステップＳ２３０〜２５０と同様の処理を経て、ファイル管理部３５に書き込まれる。ファイルに対するライトやリード等の必要な処理の終了後、CLOSEを発行してファイルを閉じる本処理がクローズステップに相当し、このステップを実行するＣＰＵ２１によりクローズ手段が構成される。
【００６６】
なお、ステップＳ１３０及びステップＳ１４０の各判断処理でステップＳ１７０へ移行した場合、すなわち拡張部分へのSEEKが可能である場合は、ファイルシステム３０においてステップＳ２３０〜２６０の処理は行われず、同図に破線で示すようにステップＳ２２０からステップＳ２７０に進むことになる。
【００６７】
本実施形態の携帯電話機１０が採用しているファイルシステム３０は、機種に応じて異なる。このため、拡張部分にSEEKができる対応機種もあれば、その種のSEEKができない未対応機種もある。本実施形態では、未対応機種についても、OPEN・CLOSEという簡単な開き直し処理を追加するだけで拡張部分へのSEEKが可能になる。このため、未対応機種について複雑なアルゴリズムを用いたアプリケーションプログラムを別途作成し直さなくても、対応機種向けに開発されたアプリケーションプログラムを少し改変するだけで流用することができる。
【００６８】
また、本実施形態の方法を用いず、データＢtの拡張部分Ｅへの書込みを実現しようとすれば、ファイルシステム３０からデータＡoを読み出して、その読み出したデータＡoをファイル編集システム４０側のバッファ上でデータＢtと１つにまとめ、その１つにまとめたデータを、データＡoの書込開始位置を指定してファイルへ書込むWRITEを発行する手法を採用する必要がある。この場合、ファイル編集システム４０側に１つにまとめる複数のデータを格納するに十分な容量のメモリを確保する必要があるうえ、１つにまとめるために用いるファイル先頭側のシーク可能な位置にあるデータを読み込むREADの発行や、データを１つにまとめる処理などが必要になり、アルゴリズムを大幅に変更せざるを得ず、処理工数も多くなる。これに対し、本実施形態では、CLOSEとOPENを追加するだけで、他のアルゴリズムは変更の必要がないので、シーク制限のない対応機種向けに開発されたアプリケーションプログラムを少しの改変だけで流用できる。
【００６９】
以上記述したように、本実施形態によれば、以下の効果を奏する。
（１）ファイルを開き直すだけで拡張部分Ｅ内の位置を指定するシークが可能となる。よって、拡張部分を指定するシークに先立ち、ファイル開き直し処理を追加するだけで、他のアルゴリズムは変更することなく拡張部分へのシークが可能となる。このため、対応機種向けに開発されたアプリケーションプログラムを少し改変するだけ未対応機種に流用できる。よって、複雑なアルゴリズムを採用しなくても、未対応機種に対しても処理の無駄のないアルゴリズムで作成されたアプリケーションプログラムを提供できる。
【００７０】
（２）未対応機種であるか否かを判断し（Ｓ１３０）、未対応機種でない場合はファイル開き直し処理は行われない。このため、対応機種については余分な処理が加わることがないので、書込処理速度が遅くなることがない。
【００７１】
（３）未対応機種においてはさらに、拡張部分へ書込みか否かを判断し（Ｓ１４０）、拡張部分への書込みである場合に限り、ファイル開き直しステップを追加する。このため、例えばデータＡoの容量がそれほど増えたりせずあるいは容量が減った場合は、拡張部分Ｅを指定するSEEKが不要になり、このような場合は、開き直しステップを経ることなく書込み処理を行うことができる。また、拡張部分を指定するシークであるか否かを、サイズ情報に基づいて判断した。つまり、ファイルオープン時に返り値として取得したファイルサイズと、WRITE発行時に返り値として取得したデータサイズとを用いて、計算によって拡張部分へのシークであるか否かを判断した。このため、判断に必要な情報を得るために必要なデータを例えばファイルから読み込むREADを発行するなどの処理をする必要がない。このため、余分な処理を増やさずに必要な判断を行うことができる。
【００７２】
（４）拡張部分への書込み、つまり拡張部分へのシークがあるか否かを判断し（Ｓ１４０）、拡張部分への書込みがある場合に、ファイルを開き直す。よって、拡張部分への書込みがない場合には、余分なファイル開き直し処理を回避できる。このため、拡張部分Ｅへの書込処理でない場合は、書込処理速度が落ちることもない。
【００７３】
（第２実施形態）
次に第２実施形態について図６に基づいて説明する。図６は、第２実施形態のファイル処理における書込み処理を示すフローチャートである。なお、前記第１実施形態と共通の部分は説明を省略し、特に異なる特徴部分についてのみ説明する。
【００７４】
この第２実施形態では、ファイルを開き直す前に、一度、ファイルシークを試みて、シーク不可能応答（エラー応答）があった場合に限り、ファイルを開き直す開き直し処理を行うようにしている。以下、この書込み処理について説明する。このフローチャートにおいて、ステップＳ１２５とステップＳ１３５とステップＳ２２５が前記実施形態と異なる。その他、図５と同じステップ番号の処理は前記第１実施形態と同様の処理である。
【００７５】
ステップＳ１１０でOPENを発行してファイルオープンを行い、次のステップＳ１２０においてデータＡo〜Ｄoをファイルへ書き込むWRITEを順次発行して、データＡo〜Ｄoの書込みを行う。
【００７６】
次にステップＳ１２５において、ファイルシークを行う。すなわち、ファイル要求部４２がファイルシステム３０に対してSEEKを発行する。このSEEKは、データＢtの書込開始位置「ｐバイト目」を指定して行われる。このSEEKを受け付けたファイルシステム３０は指定されたｐバイト目にファイルポンタを移動させるシーク処理を行うが、未対応機種である場合は、ファイルポインタを移動できる範囲がファイルオープン時のファイル範囲に制限されているので、制御部３１は、シーク不可応答（例えば返り値「１」）を返す。
【００７７】
ステップＳ１３５では、シーク不可応答であるか否かを判断する。シーク不可応答である場合はステップＳ１５０に進み、シーク不可応答でなければ（つまりシーク可能な旨の応答（例えば返り値「０」））ある場合はステップＳ１８０に進む。
【００７８】
ステップＳ１５０では、CLOSEを発行してファイルクローズを行い、さらに次のステップＳ１６０ではOPENを発行してファイルオープンを行う。
つまり、ステップＳ１３５の判断でシーク不可応答と判断されて、ステップＳ１５０に進んだ場合は、このステップＳ１５０と次のステップＳ１６０によりファイルの開き直しを行う。この結果、ファイルシステム３０ではファイルクローズの過程でＦＡＴが更新され（Ｓ２５０）、次にファイルオープンされたときには更新されたＦＡＴでファイルが開かれる（Ｓ２６０）。
【００７９】
そして、ステップＳ１７０でファイルシークを行う。このファイルシークはステップＳ１２５で試みたファイルシークと同じ内容の処理である。すなわち、データＢtの書込み開始位置「ｐバイト目」を指定して行われるSEEKである。このSEEKを受け付けたファイルシステム３０は、ファイル内の指定された位置（ｐバイト目）にファイルポンタを移動させるシーク処理を行う。この場合、ファイル内の指定された位置（ｐバイト目）にファイルポインタを移動させることができる。このファイルポインタの位置が、次の書込処理における書込開始位置となる。
【００８０】
そして、ステップＳ１８０において、ファイル書込みを行う。つまり、ファイル要求部４２はデータＢtを書き込むWRITEを発行する。発行されたWRITEを受け付けたファイルシステム３０は、指定されたデータＢtをバッファ３３上のファイルにｐバイト目から書き込む書込み処理を行う。なお、その後、ファイルに対するライトやリード等の必要な処理が終了すると、CLOSEを発行してファイルを閉じる（クローズステップ）。
【００８１】
以上、詳述したように、この第２実施形態によれば、シークを試みて失敗した場合は、ファイルを開き直し、成功した場合はそのまま書込み処理に移行する。このため、ファイルの開き直しが必要であるか否かを簡単に知ることができる。しかも、拡張部分への書込みの有無をデータサイズの値を基に判断する判断処理や、未対応機種であるか否かを判断する判断処理も無くすことができる。そして、シーク不可応答か否かを判断する判断処理は必要ではあるが、これはファイルシークを行ったときにはシークが成功したか否かを元々確認する必要があるので、余分な処理とはならない。なお、図６では、ステップＳ１２５のSEEKのときだけ応答を図示しているが、他のシステムコールにおいても返り値は返される。
【００８２】
なお、前記各実施形態に限定されず、以下の態様の変形例を採用してもよい。
（変形例１）判断ステップを廃止することができる。例えばアルゴリズムからシークで指定すべき位置がファイルオープン時の末尾（ｍバイト目）を超える位置であることが既知である場合には、判断ステップを廃止し、シークで指定すべき位置が拡張部分であるシークステップの前では必ず開き直しステップを行うようにプログラムを作成する。そして、拡張部分へのシークではないシークステップの前では開き直しステップは無くしたプログラムを作成する。もちろん、拡張部分へのシークかどうかに関係なく、拡張部分へのシークとなる可能性があるシークステップの前においては、常にファイルの開き直し処理を行う構成を採用することもできる。
【００８３】
（変形例２）前記第１実施形態では、機種の判断処理と、拡張部分への書込み有無の判断処理とを備えたが、機種の判断処理だけとしてもよい。この場合、機種を判断し、予め登録されているシーク未対応機種であれば、開き直しステップを行う。この場合、拡張部分を指定するシークでない場合もファイルは開き直しされることになるが、拡張部分へのシークが可能になるので、シークエラーが発生することはない。また、共通プログラムとした場合、少なくとも対応機種についてはファイル開き直し処理を行うことはないので、この場合には書込速度が落ちることもない。
【００８４】
（変形例３）前記実施形態では、書込みをする場合にシークを行ったが、読込みをする場合のシークのときに本発明を適用することもできる。すなわち、書込み処理で拡張したファイルの拡張部分からデータを読み込む場合、書込み処理後にCLOSE・OPENを順次発行してファイルを開き直し、その後、拡張部分を指定するシーク（SEEK）を行い、引き続き読込み（READ）を行う。
【００８５】
（変形例４）前記実施形態では、携帯電話機に適用したが、携帯電話機以外の電子機器において適用することもできる。要するに、シークで指定すべき位置がファイオルオープン時のファイルの範囲内に制限されるファイルシステムを備えた各種の電子機器に本発明を適用することができる。その他、ファイルシステムを搭載するデジタルカメラ、プリンタ、スキャナ、複合機、プロジェクタなどの電子機器に適用することができる。また、ファイルシステムが対象とするファイルの格納先は、メモリカードのような記憶媒体に限定されず、ＣＤ−ＲＯＭ、ＤＶＤ、ＭＯ、ＵＳＢメモリなどの外部記憶媒体であったり、不揮発性ＲＯＭ、ＲＡＭ、ハードディスクなどの記憶装置であったりしてもよい。
【００８６】
以下、前記実施形態および各変形例から把握される技術的思想を記載する。
（１）請求項９に記載の電子機器におけるファイル処理装置において、シークすべき位置が前記拡張部分になるか否かを判断する判断手段を備え、前記開き直し手段は、前記判断手段により前記シークすべき位置が前記拡張部分であると判断された場合に開き直し処理を行うことを特徴とする。
【００８７】
（２）前記技術的思想（１）に記載の電子機器におけるファイル処理装置において、前記判断手段は、前記シークを試みるシーク試行手段を含み、前記ファイル開き直し手段は、前記シーク試行手段によるシークを行った結果、前記ファイルシステムからシーク不可応答を受け付けた場合に開き直し処理を行うことを特徴とする。
【００８８】
（３）前記技術的思想（１）に記載の電子機器におけるファイル処理装置において、前記判断手段は、前記オープン手段と前記書込手段による各指示の応答として前記ファイルシステムから受け取ったサイズ情報（詳しくはファイルサイズとデータサイズ）を用いて、前記シークすべき位置が前記拡張部分になるか否かを判断することを特徴とする。
【００８９】
（４）請求項９に記載の電子機器におけるファイル処理装置において、前記拡張部分へのシークが不可能であるか否かを判断する前記判断手段を備え、前記開き直し手段は、前記判断手段により前記拡張部分へのシークが不可能であると判断された場合に前記開き直し処理を行うことを特徴とする。
【００９０】
（５）請求項１乃至８に記載の電子機器におけるファイル処理方法において、前記シークステップでは、前記書込ステップ（Ｓ１２０）で書き込まれたデータより前の位置を指定してシークを指示し、前記シークステップの後に前記データのデータサイズを書き込む第２の書込ステップ（Ｓ１８０）を備えることを特徴とする。このように書き込んだデータのデータサイズをデータの前に書き込む場合、そのデータサイズの書込開始位置がファイルの拡張部分となっても、データサイズを書き込むことができる。例えばライトの指示の応答（返り値）としてファイルシステムから受け取ったデータサイズを使用する場合、ファイル構造がリードを効率よく行える配置順序に決められていても、前記データの書込み後にその前の拡張部分内の位置を指定するシークをして、データサイズをそのシークした位置から書き込むことができる。
【図面の簡単な説明】
【００９１】
【図１】第１実施形態における携帯電話機の正面図。
【図２】携帯電話機の電気的構成を示すブロック図。
【図３】携帯電話機のファイル処理に関する機能ブロック図。
【図４】（ａ）〜（ｆ）ファイル処理手順を説明するファイル構造の模式図。
【図５】ファイル処理に関するフローチャート。
【図６】第２実施形態におけるファイル処理に関するフローチャート。
【図７】（ａ）〜（ｃ）従来技術におけるファイル処理手順を説明する模式図。
【符号の説明】
【００９２】
１０…電子機器としての携帯電話機、１１…入力ボタン、１５…表示部、２１…オープン手段、書込手段、ファイル開き直し手段、シーク指示手段及び判断手段を構成するＣＰＵ、２２…ＲＯＭ、２３…ＲＡＭ、２４…通信部、２５…リムーバブルメモリＩ／Ｆ、２６…リムーバブルメモリ、３０…ファイルシステム、３１…制御部、３２…ＦＡＴ管理部、３３…バッファ、３５…ファイル管理部、４０…ファイル処理装置としてのファイル編集システム、４１…入力制御部、４２…ファイル要求部、４３…編集処理部、Ｅ…拡張部分、Ａ〜Ｄ…ファイルオープン時のファイルを構成するデータ，Ａo〜Ｄo…書込処理でライトされるデータ，Ｂt…シークをして書き込まれるデータ。
【図１】
2007213253.tif 000003
【図２】
2007213253.tif 000004
【図３】
2007213253.tif 000005
【図４】
2007213253.tif 000006
【図５】
2007213253.tif 000007
【図６】
2007213253.tif 000008
【図７】
2007213253.tif 000009