(57)【要約】【課題】  既存のファイルシステムを利用しつつ、ファイルサイズの合計値が必要な場合に、ファイルサイズの合計値を高速に取得することが可能な情報処理装置を提供することを目的とする。【解決手段】  ディレクトリごとにファイルを管理する情報処理装置であって、前記ディレクトリ内のファイルのファイルサイズの合計値を取得する取得手段と、前記取得されたファイルサイズの合計値を、前記ディレクトリのディレクトリエントリに記憶する記憶手段と、前記ファイルサイズの合計値を前記ディレクトリエントリから参照する参照手段と、を有することを特徴とする。【選択図】  図１
2016024487.tif 000002
【特許請求の範囲】
【請求項１】
ディレクトリごとにファイルを管理する情報処理装置であって、
前記ディレクトリ内のファイルのファイルサイズの合計値を算出する算出手段と、
前記算出されたファイルサイズの合計値を、前記ディレクトリのディレクトリエントリに記憶する記憶手段と、
前記ファイルサイズの合計値を前記ディレクトリエントリから参照する参照手段と、
を有することを特徴とする情報処理装置。
【請求項２】
前記算出手段は、前記ディレクトリを作成する場合に、前記ファイルサイズの合計値を算出することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記ディレクトリ内にファイルを作成、前記ディレクトリ内からファイルを削除、もしくは前記ディレクトリ内のファイルのファイルサイズを変更する場合、前記ディレクトリエントリに記憶された前記ファイルサイズの合計値を変更する変更手段を更に有することを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記変更手段は、前記ディレクトリ内に下位のディレクトリを作成もしくは、前記ディレクトリ内から下位のディレクトリを削除する場合、前記ディレクトリエントリに記憶された前記ファイルサイズの合計値を変更することを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記算出手段は、前記ディレクトリ内のファイルそれぞれのファイルサイズを合計し、前記ファイルサイズの合計値を算出することを特徴とする請求項１に記載の情報処理装置。
【請求項６】
前記算出手段は、前記ディレクトリ内の下位のディレクトリのディレクトリエントリに記憶されている値と、前記ディレクトリ内のファイルのファイルサイズとを合計し、前記ファイルサイズの合計値を算出することを特徴とする請求項１に記載の情報処理装置。
【請求項７】
前記ディレクトリをコピーもしくは移動する場合、当該ディレクトリのディレクトリエントリから前記参照手段によって参照した前記ファイルサイズの合計値に基づいて、コピー先もしくは移動先にコピーもしくは移動のために必要な空き容量があるか否かを判定する判定手段を更に有することを特徴とする請求項１に記載の情報処理装置。
【請求項８】
ディレクトリごとにファイルを管理する情報処理方法であって、
取得手段が、前記ディレクトリ内のファイルのファイルサイズの合計値を取得する取得工程と、
記憶手段に、前記取得されたファイルサイズの合計値を、前記ディレクトリのディレクトリエントリに記憶する記憶工程と、
参照手段が、前記ファイルサイズの合計値を前記ディレクトリエントリから参照する参照工程と、を有することを特徴とする情報処理方法。
【請求項９】
コンピュータを、
ディレクトリごとにファイルを管理する情報処理装置であって、
前記ディレクトリ内のファイルのファイルサイズの合計値を取得する取得手段と、
前記取得されたファイルサイズの合計値を、前記ディレクトリのディレクトリエントリに記憶する記憶手段と、
前記ファイルサイズの合計値を前記ディレクトリエントリから参照する参照手段と、
を有することを特徴とする情報処理装置として機能させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファイルを管理する情報処理装置に関する。
【背景技術】
【０００２】
一般的なパーソナルコンピュータや組み込み機器などの情報処理装置は、記憶装置を有し、電子的なファイルの記録、編集、コピー、削除などを行うことが可能になっている。また、一般的なファイルシステムにおいては、ファイルは、ディレクトリ（もしくはフォルダ）ごとに分類され、管理されている。コピー処理では、ディレクトリを別の格納場所（別のディレクトリもしくは別の記憶装置）にコピーすることもある。その場合、コピー先に十分な空き容量があるか否かを判定するためには、コピー元のディレクトリ内のファイルのファイルサイズの合計値を算出する必要がある。合計値とコピー先の空き容量とを比較にすることによって、コピー処理が可能か否か判定することが出来る。
【０００３】
組み込み機器などに採用されているＦＡＴ（Ｆｉｌｅ  Ａｌｌｏｃａｔｉｏｎ  Ｔａｂｌｅ）ファイルシステムをはじめとする多くのファイルシステムにおいては、コピー処理などを行う度に、上述のファイルサイズの合計値を算出する必要がある。よって、コピー元のディレクトリ内のファイル数が多くなるに従い、ファイルサイズの合計値を算出するための時間は増大する。そのため、多くのファイルシステムにおいて、ファイルサイズの合計値の算出は、コピー処理などの処理速度低下の一因となっている。
【０００４】
特許文献１には、上記処理速度低下の防止のために、ディレクトリごとのファイルサイズの合計値が格納されたファイル情報テーブルを、記憶装置内に作成しておくことが開示されている。ファイル情報テーブルに格納されているファイルサイズの合計値は、あらかじめ算出されたものである。従って、ファイルサイズの合計値が必要な場合は、ファイル情報テーブルを参照すれば良く、上記処理速度の低下を防止することが可能になっている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−２１３０３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１に開示されている技術では、ファイル情報テーブルを新たに作成する必要があるため、ＦＡＴファイルシステムをはじめとする既存のファイルシステムに採用することが難しい場合がある。また、ファイル情報テーブルが記憶装置内の記憶容量を圧迫するおそれもある。本発明は、上記課題を鑑みてなされたものであり、ファイルサイズの合計値が必要となった場合に、そのファイルサイズの合計値を簡単かつ高速に参照することが可能な情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本願発明は、ディレクトリごとにファイルを管理する情報処理装置であって、前記ディレクトリ内のファイルのファイルサイズの合計値を取得する取得手段と、前記取得されたファイルサイズの合計値を、前記ディレクトリのディレクトリエントリに記憶する記憶手段と、前記ファイルサイズの合計値を前記ディレクトリエントリから参照する参照手段と、を有することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、ファイルサイズの合計値が必要となった場合に、そのファイルサイズの合計値を簡単かつ高速に参照することが可能な情報処理装置を提供することが出来る。
【図面の簡単な説明】
【０００９】
【図１】情報処理装置のハードウェア構成を示す図。
【図２】外部記憶装置内のＦＡＴファイルシステムの構造を示す図。
【図３】ＦＡＴファイルシステムのディレクトリエントリの構造を示す図。
【図４】ファイルのファイルサイズの合計値がディレクトリエントリ３００に記憶された状態を示す図。
【図５】合計値をディレクトリエントリ３００に記憶のするための具体的な処理を示したフローを示す図。
【図６】第一の実施形態において、ディレクトリ内にファイルを作成する場合の処理を示す図。
【図７】第一の実施形態において、ディレクトリ内のファイルを削除する場合の処理を示す図。
【図８】第一の実施形態において、ファイルのファイルサイズを変更する場合の処理を示す図。
【図９】第一の実施形態において、ディレクトリ内のファイルのファイルサイズを変更する場合の処理フローを示す図。
【図１０】第二の実施形態において、親ディレクトリ内に子ディレクトリを追加する場合の処理を示す図。
【図１１】第二の実施形態において、親ディレクトリ内の子ディレクトリを削除する場合の処理を示す図。
【図１２】第三の実施形態において、子ディレクトリ内にファイルを作成（追加）する場合の処理を示す図。
【図１３】第三の実施形態において、子ディレクトリ内にファイルを作成する場合の処理フローを示す図。
【図１４】第三の実施形態において、上位のディレクトリエントリを更新するためのサブルーチンのフローを示す図。
【図１５】第三の実施形態において、子ディレクトリ内のファイルを削除する場合の処理を示す図。
【図１６】第三の実施形態において、子ディレクトリ内のファイルを削除する場合の処理フローを示す図。
【図１７】第三の実施形態において、子ディレクトリ内のファイルのファイルサイズを変更する場合の処理を示す図。
【図１８】第三の実施形態において、子ディレクトリ内のファイルのファイルサイズを変更する場合の処理フローを示す図。
【図１９】第三の実施形態において、子ディレクトリ内にディレクトリを作成（追加）する場合の処理を示す図。
【図２０】第三の実施形態において、子ディレクトリ内にファイルを作成する場合の処理フローを示す図。
【図２１】第三の実施形態において、子ディレクトリ内のディレクトリを削除する場合の処理を示す図である。
【図２２】第三の実施形態において、子ディレクトリ内のディレクトリを削除する場合の処理フローを示す図。
【発明を実施するための形態】
【００１０】
（第一の実施形態）
図１は、本実施形態におけるファイル管理装置１００（情報処理装置）のハードウェア構成を示す図である。
【００１１】
ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１コンピュータプログラムの処理手順に従い各処理を実行する。ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１０２にはコンピュータプログラムやデータが記憶されている。ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１０３にはコンピュータプログラムや、処理に用いられるデータ、処理結果などが一時的に記憶される。
【００１２】
外部記憶装置１０４は、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）やＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）などから構成される。外部記憶装置１０４には、コンピュータプログラムや、処理に用いられるデータ、処理結果などが記憶される。
【００１３】
バス１０５は上記の各部の間でデータの送受信を行うための通信経路である。
【００１４】
ＣＰＵ１０１は、バス１０５を介してＲＯＭ１０２、ＲＡＭ１０３、外部記憶装置１０４との間で様々なデータの送受信や処理を行う。具体的な処理としては、ＣＰＵ１０１は、外部記憶装置１０４やＲＯＭ１０２に格納されているコンピュータプログラムを読み出し、ＲＡＭ１０３に記憶する。そして、読み出されたコンピュータプログラムの処理手順に従い、外部記憶装置１０４などから所定のデータを読み出し、各処理を行う。
【００１５】
尚、外部記憶装置１０４内のデータやコンピュータプログラムは、電子的なファイルとして、ディレクトリごとに管理・記憶されている。ファイルの記憶方式としては、ＦＡＴファイルシステムやｅｘｔファイルシステムなど、様々なファイルシステムがある。以下では、ファイルシステムの一つであるＦＡＴファイルシステムの構造について説明する。
【００１６】
図２は、本実施形態における外部記憶装置１０４内のＦＡＴファイルシステムの構造を示す図である。
【００１７】
ブートセクタ２０１には、ファイルシステム全体のパーティション情報が記憶されている。ブートセクタ２０１には、フォーマット形式を示す情報、後述のＦＡＴ領域のサイズ、後述のデータ領域のサイズ、などが記憶されている。
【００１８】
ＦＡＴ領域２０２には、主にクラスタ同士の連結状態を示す情報が記憶されている。クラスタとは、ＦＡＴファイルシステムにおいてデータの読み書きを行う処理単位であり、記憶媒体の記憶単位であるセクタを複数まとめたものである。ファイルの実データを示すクラスタは、外部記憶装置１０４内において連続して記憶されているとは限らない。よって、ファイルの読み書きなどを行う際には、ＦＡＴ領域２０２の情報に基づき、クラスタ同士の連結状態を参照する必要がある。
【００１９】
データ領域２０３には、実データとディレクトリエントリとが記憶される。
実データはファイル内の情報の実体を示すデータである。ディレクトリエントリは、ファイルやディレクトリごとに記憶され、ファイル名やファイルのデータサイズを示す情報などが記憶される。ディレクトリエントリの構造については後述する。以上が、ＦＡＴファイルシステムの構造である。
【００２０】
図３は、本実施形態におけるＦＡＴファイルシステムのディレクトリエントリ３００の構造を示す図である。
【００２１】
ファイル／ディレクトリ名３０１は、ファイル名もしくはディレクトリ名を示す情報である。属性３０２は、ファイルかディレクトリか、更に、ファイルの場合は読み取り専用かなどを示す情報である。予約領域３０３はファイルもしくはディレクトリの予約領域を示す。更新時刻３０４は、ファイルもしくはディレクトリの更新時刻を示す情報である。更新日付３０５は、ファイルもしくはディレクトリの更新日付を示す情報である。３０６は、ファイルの実データの最初のクラスタ番号を示す実データの最初のクラスタ番号３０６である。
【００２２】
サイズ領域３０７は、当該ディレクトリエントリ３００がファイルに対応している場合は、ファイルサイズを示す。具体的な値としては、ファイルサイズのバイト数が記憶されている。尚、当該ディレクトリエントリ３００がディレクトリに対応する場合は、通常、０が記憶されている。
【００２３】
本実施形形態では、ディレクトリエントリ３００がディレクトリに対応している場合、ディレクトリエントリ３００のサイズ領域３０７に、当該ディレクトリ内のファイルのファイルサイズの合計値を記憶しておく。図４は、ファイルのファイルサイズの合計値がディレクトリエントリ３００記憶された状態を示す図である。図４に示す通り、サイズ領域３０７に、ファイルＡのサイズＳ１とファイルＢのサイズＳ２とが格納されている。ディレクトリエントリ３００にファイルサイズの合計値を記憶しておくことにより、コピーもしくは移動でファイルサイズの合計値が必要になった場合でも、あらためて合計値を算出する必要がない。すなわち、ディレクトリエントリ３００のサイズ３０７を参照することによりファイルサイズの合計値を取得することが出来るので、ファイルサイズの合計値を取得する際の処理速度を向上することが出来る。従って、コピー先もしくは移動先にコピーもしくは移動のために必要な空き容量があるか否かを高速に判定することが出来る。必要な空き容量がないと判定された場合、システムエラーを出して、コピーもしくは移動を中止する。
【００２４】
図５は、合計値をディレクトリエントリ３００に記憶のするための具体的な処理を示したフローである。
Ｓ５０１では、ファイル管理装置１００は、ファイルシステムの新規作成時やディレクトリの新規作成時に、各ディレクトリ内のファイルのファイルサイズの合計値を算出する。
【００２５】
尚、外部装置などからファイルのファイルサイズの合計値を取得することが出来る場合は、外部装置から取得してもよい。Ｓ５０２では、取得もしくは算出されたファイルのファイルサイズの合計値を、ディレクトリエントリ３００のサイズ３０７に記憶する。以上の処理でファイルサイズの合計値が格納された後は、必要な場合にディレクトリエントリ３００を参照すれば、ファイルサイズの合計値を取得することが可能となる。
【００２６】
以下では、更に、ファイルの作成、削除、ファイルサイズの変更などを行った場合の本実施形態における処理について説明する。
【００２７】
（ファイルの作成）
ファイル管理装置１００が所定のディレクトリ内にファイルを作成する場合の処理について説明する。
【００２８】
図６（ａ）は、ディレクトリ内にファイルを作成する場合の処理を示す概念図である。ここでは、ファイル管理装置１００がディレクトリ４０１内にサイズＳ１のファイル４０２を作成すると想定している。図６（ａ）の左部は、ファイル作成前であり、ディレクトリ４０１内にファイルが存在しない状態を示している。ディレクトリ４０１内にファイルが存在しないため、ディレクトリエントリ３００のサイズ領域３０７には、０が記憶されている。ここで、当該ディレクトリ内にファイルを新たに作成した場合、右部のようにディレクトリエントリ３００の値を変更する。図示の通り、ディレクトリエントリ３００のサイズ領域３０７には、新たに作成されたファイル４０２のファイルサイズＳ１が記憶される。このような処理によって、ディレクトリエントリ３００のサイズ領域３０７には、当該ディレクトリ内のファイルのファイルサイズの合計値が格納されることになる。
【００２９】
次に、上記処理を実現するため、ディレクトリ内にファイルを作成する場合の具体的な処理フローについて説明する。
【００３０】
図６（ｂ）は、ディレクトリ内にファイルを作成する場合の処理フローを示す図である。同図に従い、図６（ａ）を例として、各処理について説明する。
【００３１】
ステップＳ５０１では、ファイル管理装置１００は、ディレクトリ４０１に対応するディレクトリエントリ３００のサイズ領域３０７に格納しているファイルサイズの合計０を取得する。ステップＳ５０２では、ファイル管理装置１００は、作成するファイル４０２に対応するディレクトリエントリ３００のサイズ領域３０７に格納しているサイズＳ１を取得する。ステップＳ５０３では、ファイル管理装置１００は、ステップＳ５０１で取得したサイズＳ１とステップＳ５０２で取得したサイズ０を足し合わせる。ステップＳ５０４では、ファイル管理装置１００は、ステップＳ５０３で取得したサイズＳ１をディレクトリ４０１に対応するディレクトリエントリ３００のサイズ領域３０７に格納する。以上が、本実施形態におけるファイルの作成の処理である。尚、図６（ａ）においては、ファイルを一つだけ作成する場合を示しているが、複数のファイルを作成する場合でも、同様に、図５の処理フローに従って処理することが可能である。
【００３２】
（ファイルの削除）
ファイル管理装置１００が所定のディレクトリ内のファイルを削除する場合の処理について説明する。図７（ａ）は、ディレクトリ内のファイルを削除する場合の処理を示す概念図である。
【００３３】
ここでは、ファイル管理装置１００がディレクトリ６０１内のファイル６０２を削除すると想定している。図７（ａ）の左部は、ファイル削除前の状態を示している。ディレクトリ６０１のディレクトリエントリのサイズ領域３０７には、ファイルサイズＳ１が記憶されている。ここで、当該ディレクトリ内のファイルを削除した場合、右部のようにディレクトリエントリの値を変更する。図示の通り、ファイルが削除され、ディレクトリ内にファイルが存在しない状態になったため、ディレクトリエントリのサイズ３０７には、０が記憶される。
【００３４】
次に、上記処理を実現するため、ディレクトリ内のファイルを削除する場合の具体的な処理フローについて説明する。
【００３５】
図７（ｂ）は、ディレクトリ内のファイルを削除する場合の処理フローを示す図である。同図に従い、図７（ａ）を例として、各処理について説明する。ステップＳ７０１では、ファイル管理装置１００は、ディレクトリ６０１に対応するディレクトリエントリ３００のサイズ領域３０７に格納されているファイルサイズの合計Ｓ１を取得する。ステップＳ７０２では、ファイル管理装置１００は、削除するファイル６０２に対応するディレクトリエントリ３００のサイズ領域３０７に格納しているサイズＳ１を取得する。ステップＳ７０３では、ファイル管理装置１００は、ステップＳ７０１で取得したサイズＳ１からＳ７０２で取得したサイズＳ１を差し引く。この場合、サイズは０となる。ステップＳ７０４では、ファイル管理装置１００は、Ｓ７０３で取得したサイズ０をディレクトリ６０１に対応するディレクトリエントリ３００のサイズ領域３０７に格納する。
【００３６】
以上が、本実施形態におけるファイルの削除の処理である。尚、図７（ａ）においては、ファイルを一つだけ削除する場合を示しているが、複数のファイルを削除する場合でも、同様に、図７の処理フローに従って処理することが可能である。
【００３７】
（ファイルサイズの変更）
ファイル管理装置１００が所定のディレクトリ内のファイルのファイルサイズを変更する場合の処理について説明する。図８は、ディレクトリ内のファイルサイズを変更する場合の処理を示す概念図である。
【００３８】
ここでは、ファイル管理装置１００がディレクトリ８０１内のファイル８０２のファイルサイズを変更すると想定している。図８の左部は、ファイルのサイズ変更前の状態を示している。ディレクトリ８０１のディレクトリエントリ３００のサイズ領域３０７には、ファイルサイズＳ１が記憶されている。ここで、当該ディレクトリ内のファイル８０２のファイルのサイズを変更した場合、右部のようにディレクトリエントリ３００の値を変更する。図示の通り、ファイルのファイルサイズが変更されたため、ディレクトリエントリ３００のサイズ領域３０７には、変更後のサイズＳ１’が記憶される。
【００３９】
次に、上記処理を実現するため、ディレクトリ内のファイルのファイルサイズを変更する場合の具体的な処理フローについて説明する。
【００４０】
図９は、ディレクトリ内のファイルのファイルサイズを変更する場合の処理フローを示す図である。同図に従い、図８を例として、各処理について説明する。
【００４１】
（Ｓ９０１）ステップＳ９０１では、ファイル管理装置１００は、ディレクトリ８０１に対応するディレクトリエントリ３００のサイズ領域３０７に格納しているファイルサイズの合計Ｓ１を取得する。ステップＳ９０２では、ファイル管理装置１００は、サイズ変更前のファイル８０２に対応するディレクトリエントリ３００のサイズ領域３０７よりサイズＳ１を取得する。ステップＳ９０３では、ファイル管理装置１００は、サイズ変更後のファイル８０２に対応するディレクトリエントリ３００のサイズ領域３０７よりサイズＳ１’を取得する。ステップＳ９０４では、ファイル管理装置１００は、ステップＳ９０３で取得したサイズＳ１’からＳ９０２で取得したサイズＳ１を差し引く。ステップＳ９０５では、ファイル管理装置１００は、ステップＳ９０４で取得した差（Ｓ１’―Ｓ１）をステップＳ９０１で取得したファイルサイズの合計Ｓ１に加える。ステップＳ９０６では、ファイル管理装置１００は、ステップＳ９０５で取得したサイズＳ１’をディレクトリ８０１に対応するディレクトリエントリ３００のサイズ領域３０７に格納する。
【００４２】
以上が、本実施形態におけるファイルの削除の処理である。尚、図８においては、ファイルのファイルサイズを一つだけ変更する場合を示しているが、複数のファイルのファイサイズを変更する場合でも、同様に、図９の処理フローに従って処理することが可能である。
【００４３】
以上の処理により、本実施形態においては、ファイルの作成、削除、変更において、ファイルサイズの合計値を、ディレクトリのディレクトリエントリに反映させることが出来る。よって、ディレクトリ内に含まれるファイルのファイルサイズの合計値を取得する必要が生じた場合、合計処理を改めて行う必要がなく、当該ディレクトリのディレクトリエントリを参照することにより高速にファイルサイズの合計値を取得することが出来る。また、ディレクトリエントリを利用しているため、一般的なファイルシステムにおいて本実施形態の方法を容易に実装することが可能となる。
【００４４】
（第二の実施形態）
第一の実施形態においては、ディレクトリ内にファイルのみが存在する場合の処理について説明した。本実施形態においては、ディレクトリ内に別のディレクトリが存在する場合の処理について説明する。尚、ファイルの作成、ファイルの削除、ファイルのファイルサイズ変更の処理については、第一の実施形態と同様の処理になるため、ここでは説明を省略する。また、本実施形態においては、上位階層のディレクトリを親ディレクトリ、下位階層のディレクトリを子ディレクトリとする。
【００４５】
（ディレクトリの追加）
図１０は、本実施形態において、親ディレクトリ内に子ディレクトリを追加する場合の処理について示す図である。
【００４６】
図１０の左部は、ディレクトリ１００１内にサイズＳ１のファイル１００２が存在する状態を示している。ディレクトリ１００１に対応するディレクトリエントリ３００のサイズ領域３０７には、ファイルサイズの合計Ｓ１が格納されている。ここで、図１０の右部のように、ファイル管理装置１００が、ディレクトリ１００１内に、ファイルサイズの合計Ｓ２を持つディレクトリ１００３を追加すると想定する。本実施形態では、親ディレクトリが子ディレクトリを持つ場合、子ディレクトリのファイルサイズの合計を親ディレクトリのファイルサイズの合計に加えない。よって、ディレクトリ１００１内にディレクトリ１００３を追加しても、ディレクトリ１００１に対応するディレクトリエントリ３００のサイズ領域３０７のファイルサイズの合計をＳ１から変更しない。
【００４７】
（ディレクトリの削除）
図１１は、本実施形態において、親ディレクトリ内の子ディレクトリを削除する場合の処理を示す図である。
【００４８】
図１１の左部は、ディレクトリ１１０１内にはサイズＳ１のファイル１１０２とファイルサイズの合計Ｓ２を持つディレクトリ１１０３がある状態を示している。ディレクトリ１１０１に対応するディレクトリエントリ３００のサイズ領域３０７にファイルサイズの合計Ｓ１が格納されている。ここで、図１１の右部のように、ファイル管理装置１００が、ディレクトリ１１０１の下にあるディレクトリ１１０３を削除すると想定する。しかし、本実施形態では、ディレクトリの追加と同様に、子ディレクトリのファイルサイズの合計を親ディレクトリのファイルサイズの合計に加えない。よって、ディレクトリ１１０１内からディレクトリ１１０３を削除しても、ディレクトリ１１０１のファイルサイズの合計をＳ１から変更しない。
【００４９】
本実施形態における処理を行った場合、子ディレクトリ内のファイルサイズの合計値が親ディレクトリのファイルサイズの合計値に反映されない。よって、子ディレクトリ内のファイルサイズの合計値も含めた合計値が必要である場合、逐次、合計の処理が必要になる。しかしながら、子ディレクトリの追加・削除に応じて、親ディレクトリのファイルサイズの合計値を変更しないため、子ディレクトリの追加・削除を頻繁に行う場合には、システム全体の処理速度を向上させることが可能となる。
【００５０】
（第三の実施形態）
第二の実施形態においては、親ディレクトリのファイルサイズの合計値に、子ディレクトリのファイルサイズの合計値を反映させなかった。本実施形態においては、親ディレクトリのファイルサイズの合計値に、子ディレクトリのファイルサイズの合計値を反映させる。また、本実施形態においては、子ディレクトリのファイルサイズの合計値は、最も上位のディレクトリであるルートディレクトリまで反映させるようにする。
【００５１】
（ファイルの作成）
図１２は、本実施形態において、子ディレクトリ内にファイルを作成（追加）する場合の処理を示す図である。図１２の左部はファイル作成前の状態を示しており、図１２の右部はファイル作成後の状態を示している。図示の通り、ファイル作成前は、親ディレクトリ１２０１内に子ディレクトリ１２０２が存在し、子ディレクトリ１２０２内にファイル１２０３が存在している。親ディレクトリ１２０１および子ディレクトリ１２０２それぞれのディレクトリエントリ３００のサイズ領域３０７には、ファイル１２０３のファイルサイズＳ１が格納されている。
【００５２】
ファイル作成後は、子ディレクトリ１２０２内にファイル１２０３に加え、ファイル１２０４が作成されている。親ディレクトリ１２０１および子ディレクトリ１２０２それぞれのディレクトリエントリ３００のサイズ領域３０７には、ファイル１２０３のファイルサイズＳ１とファイル１２０４のサイズＳ２との合計値が格納されている。
【００５３】
次に、本実施形態における子ディレクトリ内にファイルを作成する場合の処理フローを説明する。図１３は、本実施形態において、子ディレクトリ内にファイルを作成する場合の処理フローを示す図である。同図に従い、図１２を例として、各処理について説明する。
【００５４】
ステップＳ１３０１では、ファイル管理装置１００は、子ディレクトリ１２０２に対応するディレクトリエントリ３００のサイズ領域３０７に格納しているファイルサイズの合計Ｓ１を取得する。ステップＳ１３０２では、ファイル管理装置１００は、ファイル１２０４が子ディレクトリ１２０２内に作成された場合、ファイル１２０４のファイルサイズであるサイズＳ２を取得する。ステップＳ１３０３では、ファイル管理装置１００は、ステップＳ１３０１で取得したサイズＳ１とステップＳ１３０２で取得したサイズＳ２を足し合わせる。ステップＳ１３０４では、ファイル管理装置１００は、ステップＳ１３０３で取得したサイズ（Ｓ１＋Ｓ２）をディレクトリ１２０２に対応するディレクトリエントリ３００のサイズ領域３０７に格納する。ステップＳ１３０５では、ファイル管理装置１００は、ディレクトリエントリ３００が更新されたディレクトリの上位にあるディレクトリのディレクトリエントリ３００を更新する。ただし、本ステップにおける更新は、サブルーチンを用いて実行される。サブルーチンの具体的な処理は、図１４のフローを用いて説明する。
【００５５】
次に、上述のステップＳ１３０５におけるサブルーチンの具体的な処理について説明する。図１４は、上位のディレクトリエントリ３００を更新するためのサブルーチンのフローを示す図である。同図に従い、図１２を例として、各処理について説明する。尚、以下のサブルーチンでは、便宜上、直前のステップでファイルサイズの合計を更新したディレクトリ１２０２をカレントディレクトリ（ファイル管理装置１００が現時点でファイルサイズの合計を更新するディレクトリ）とする。
【００５６】
ステップＳ１４０１では、ファイル管理装置１００は、サブルーチンの処理を開始する直前に更新したディレクトリをカレントディレクトリとして設定する。図１３のフローから本サブルーチンを起動した場合においては、ディレクトリ１２０２がカレントディレクトリとなる。ステップＳ１４０２では、ファイル管理装置１００は、カレントディレクトリがルートディレクトリ（最も上位のディレクトリ）であるか否かを判定する。ルートディレクトリであると判定された場合、更新すべき上位のディレクトリは存在しないので、サブルーチンを終了させる。ルートディレクトリであると判定されなかった場合、ステップＳ１４０３に処理を進める。ステップＳ１４０３では、ファイル管理装置１００は、カレントディレクトリを一つ上位のディレクトリに更新する。図１３のフローから本サブルーチンを起動した場合においては、ディレクトリ１２０２の一つ上位のディレクトリであるディレクトリ１２０１がカレントディレクトリに設定される。ステップＳ１４０４では、ファイル管理装置１００は、カレントディレクトリに対応するディレクトリエントリ３００のサイズ領域３０７に格納されている値を取得する。図１３のフローから本サブルーチンを起動した場合においては、カレントディレクトリ１２０１に対応するディレクトリエントリ３００のサイズ領域３０７よりファイルサイズの合計Ｓ１を取得する。ステップＳ１４０５では、ファイル管理装置１００は、カレントディレクトリの一つ下位のディレクトリの変更前のファイルサイズの合計を取得する。図１３のフローから本サブルーチンを起動した場合においては、カレントディレクトリ１２０１の子ディレクトリ１２０２の変更前のファイルサイズの合計値Ｓ１を取得する。尚、更新前のファイルサイズの合計Ｓ１は、あらかじめメモリバッファなどに格納されているものとする。ステップＳ１４０６では、ファイル管理装置１００は、カレントディレクトリの一つ下位のディレクトリの変更後のファイルサイズの合計を取得する。図１３のフローから本サブルーチンを起動した場合においては、カレントディレクトリ１２０１の子ディレクトリ１２０２の変更後のファイルサイズの合計値（Ｓ１＋Ｓ２）を取得する。ステップＳ１４０７では、ファイル管理装置１００は、ステップＳ１４０６で取得されたファイルサイズの合計値からステップＳ１４０５で取得されたファイルサイズの合計値を差し引く。図１３のフローから本サブルーチンを起動した場合においては、ファイルサイズの合計値（Ｓ１＋Ｓ２）からステップＳ１４０５で取得したファイルサイズの合計値Ｓ１を差し引く。ステップＳ１４０８では、ファイル管理装置１００は、ステップＳ１４０７で取得された差分とステップＳ１４０４で取得されたファイルサイズとを足し合わせる。図１３のフローから本サブルーチンを起動した場合においては、ステップＳ１４０７で取得された差分Ｓ２とステップＳ１４０４で取得されたファイルサイズＳ１とを足し合わせる。ステップＳ１４０９では、ファイル管理装置１００は、ステップＳ１４０８の足し合わせにより取得した値を、カレントディレクトリに対応するディレクトリエントリ３００のサイズ領域３０７に格納する。図１３のフローから本サブルーチンを起動した場合においては、ステップＳ１４０８で取得された値（Ｓ１＋Ｓ２）をカレントディレクトリ１２０１に対応するディレクトリエントリ３００のサイズ領域３０７に格納する。ステップＳ１４０９の処理後、ステップＳ１４０２に処理を戻し、ステップＳ１４０２でカレントディレクトリがルートディレクトリであると判定されるまで、上述の処理が繰り返される。
【００５７】
以上の処理によって、子ディレクトリのファイルサイズの合計値を、最も上位のディレクトリであるルートディレクトリまで反映させることが出来る。
【００５８】
尚、図１４のステップＳ１４０２においては、カレントディレクトリがルートディレクトリであるか否かの判定結果に基づき、サブルーチンを終了させるか否かを決定した。しかしながら、ルートディレクトリの替わりに、カレントディレクトリがファイル管理装置１００に指定されたディレクトリであるか否かの判定結果に基づき、サブルーチンを終了させるか否かを決定しても良い。
【００５９】
（ファイルの削除）
図１５は、本実施形態において、子ディレクトリ内のファイルを削除する場合の処理を示す図である。図１５の左部はファイル削除前の状態を示しており、図１５の右部はファイル削除後の状態を示している。図示の通り、ファイル削除前は、親ディレクトリ１５０１内に子ディレクトリ１５０２が存在し、子ディレクトリ１５０２内にファイル１５０３とファイル１５０４とが存在している。親ディレクトリ１５０１および子ディレクトリ１５０２それぞれのディレクトリエントリ３００のサイズ領域３０７には、ファイル１５０３のファイルサイズＳ１とファイル１５０４のファイルサイズＳ２との合計値が格納されている。
【００６０】
ファイル削除後は、子ディレクトリ１５０２内からファイル１５０４が削除され、ファイル１５０３のみが存在している。親ディレクトリ１５０１および子ディレクトリ１５０２それぞれのディレクトリエントリ３００のサイズ領域３０７には、ファイル１５０３のファイルサイズＳ１のみが格納されている。
【００６１】
次に、本実施形態における子ディレクトリ内のファイルを削除する場合の処理フローを説明する。図１６は、本実施形態において、子ディレクトリ内のファイルを削除する場合の処理フローを示す図である。同図に従い、図１５を例として、各処理について説明する。
【００６２】
ステップＳ１６０１では、ファイル管理装置１００は、子ディレクトリ１５０２に対応するディレクトリエントリ３００のサイズ領域３０７に格納しているファイルサイズの合計（Ｓ１＋Ｓ２）を取得する。ステップＳ１６０２では、ファイル管理装置１００は、ファイル１５０４が子ディレクトリ１５０２内から削除された場合、ファイル１５０４のファイルサイズであるサイズＳ２を取得する。ステップＳ１６０３では、ファイル管理装置１００は、ステップＳ１６０１で取得されたファイルサイズの合計（Ｓ１＋Ｓ２）から、ステップＳ１６０２で取得されたファイルサイズＳ２を差し引く。ステップＳ１６０４では、ファイル管理装置１００は、ステップＳ１６０３で取得された差分Ｓ１を、ディレクトリ１５０２に対応するディレクトリエントリ３００のサイズ領域３０７に格納する。ステップＳ１６０５では、ファイル管理装置１００は、ディレクトリエントリ３００が更新されたディレクトリの上位にあるディレクトリのディレクトリエントリ３００を更新する。本ステップにおける更新は、前述の図１４のサブルーチンを用いて実行される。
【００６３】
（ファイルサイズの変更）
図１７は、本実施形態において、子ディレクトリ内のファイルのファイルサイズを変更する場合の処理を示す図である。図１７の左部はファイルサイズ変更前の状態を示しており、図１７の右部はファイルサイズ変更後の状態を示している。図示の通り、ファイルサイズ変更前は、親ディレクトリ１７０１内に子ディレクトリ１７０２が存在し、子ディレクトリ１７０２内にファイル１７０３が存在している。親ディレクトリ１７０１および子ディレクトリ１７０２それぞれのディレクトリエントリ３００のサイズ領域３０７には、ファイル１７０３のファイルサイズＳ１が格納されている。
【００６４】
ファイルサイズ変更後は、親ディレクトリ１７０１および子ディレクトリ１７０２それぞれのディレクトリエントリ３００のサイズ領域３０７には、ファイルサイズ変更後のファイル１７０３のファイルサイズＳ１’が格納されている。
【００６５】
次に、本実施形態における子ディレクトリ内のファイルのファイルサイズを変更する場合の処理フローを説明する。図１８は、本実施形態において、子ディレクトリ内のファイルのファイルサイズを変更する場合の処理フローを示す図である。同図に従い、図１７を例として、各処理について説明する。ステップＳ１８０１では、ファイル管理装置１００は、子ディレクトリ１７０２に対応するディレクトリエントリ３００のサイズ領域３０７に格納しているファイルサイズの合計Ｓ１を取得する。ステップＳ１８０２では、ファイル管理装置１００は、ファイル１７０３のファイルサイズを変更する場合、ファイルサイズ変更前のファイル１７０３のファイルサイズであるＳ１を取得する。ステップＳ１８０３では、ファイル管理装置１００は、ファイルサイズ変更後のファイル１７０３のファイルサイズであるＳ１’を取得する。ステップＳ１８０４では、ファイル管理装置１００は、ステップＳ１８０３で取得されたファイルサイズＳ１’からステップＳ１８０３で取得されたファイルサイズＳ１を差し引き、差分値を取得する。ステップＳ１８０５では、ファイル管理装置１００は、ステップＳ１８０４で取得された差分値を、ステップＳ１８０１で取得されたファイルサイズの合計Ｓ１に加える。ステップＳ１８０６では、ファイル管理装置１００は、ステップＳ１８０５で取得された値を、子ディレクトリ１７０２に対応するディレクトリエントリ３００のサイズ領域３０７に格納する。
【００６６】
（Ｓ１８０７）ステップＳ１８０７では、ファイル管理装置１００は、ディレクトリエントリ３００が更新されたディレクトリの上位にあるディレクトリのディレクトリエントリ３００を更新する。本ステップにおける更新は、前述の図１４のサブルーチンを用いて実行される。
【００６７】
（ディレクトリの追加）
図１９は、本実施形態において、子ディレクトリ内にディレクトリを作成（追加）する場合の処理を示す図である。図１９の左部はディレクトリ作成前の状態を示しており、図１９の右部はディレクトリ作成後の状態を示している。図示の通り、ディレクトリ作成前は、親ディレクトリ１９０１内に子ディレクトリ１９０２が存在し、子ディレクトリ１９０２内にファイル１９０３が存在している。親ディレクトリ１９０１および子ディレクトリ１９０２それぞれのディレクトリエントリ３００のサイズ領域３０７には、ファイル１９０３のファイルサイズＳ１が格納されている。
【００６８】
ディレクトリ作成後は、子ディレクトリ１９０２内にファイル１９０３に加え、ディレクトリ１９０４が作成されている。親ディレクトリ１９０１および子ディレクトリ１９０２それぞれのディレクトリエントリ３００のサイズ領域３０７には、ファイル１９０３のファイルサイズＳ１とディレクトリ１９０４のサイズＳ２との合計値が格納されている。
【００６９】
次に、本実施形態における子ディレクトリ内にディレクトリを作成する場合の処理フローを説明する。図２０は、本実施形態において、子ディレクトリ内にファイルを作成する場合の処理フローを示す図である。同図に従い、図１９を例として、各処理について説明する。
【００７０】
ステップＳ２００１では、ファイル管理装置１００は、子ディレクトリ１９０２に対応するディレクトリエントリ３００のサイズ領域３０７に格納しているファイルサイズの合計Ｓ１を取得する。ステップＳ２００２では、ファイル管理装置１００は、ディレクトリ１９０４が子ディレクトリ１９０２内に作成された場合、ディレクトリ１９０４のディレクトリサイズであるサイズＳ２を取得する。ステップＳ２００３では、ファイル管理装置１００は、ステップＳ２００１で取得したサイズＳ１とステップＳ２００２で取得したサイズＳ２を足し合わせる。ステップＳ２００４では、ファイル管理装置１００は、ステップＳ２００３で取得したサイズ（Ｓ１＋Ｓ２）をディレクトリ１９０２に対応するディレクトリエントリ３００のサイズ領域３０７に格納する。ステップＳ２００５では、ファイル管理装置１００は、ディレクトリエントリ３００が更新されたディレクトリの上位にあるディレクトリのディレクトリエントリ３００を更新する。本ステップにおける更新は、前述の図１４のサブルーチンを用いて行われる。
【００７１】
（ディレクトリの削除）
図２１は、本実施形態において、子ディレクトリ内のディレクトリを削除する場合の処理を示す図である。図２１の左部はディレクトリ削除前の状態を示しており、図２１の右部はディレクトリ削除後の状態を示している。図示の通り、ディレクトリ削除前は、親ディレクトリ２１０１内に子ディレクトリ２１０２が存在し、子ディレクトリ２１０２内にファイル２１０３とディレクトリ２１０４とが存在している。親ディレクトリ２１０１および子ディレクトリ２１０２それぞれのディレクトリエントリ３００のサイズ領域３０７には、ファイル２１０３のファイルサイズＳ１とディレクトリ２１０４のディレクトリサイズＳ２との合計値が格納されている。
【００７２】
ディレクトリ削除後は、子ディレクトリ２１０２内からディレクトリ２１０４が削除され、ファイル２１０３のみが存在している。親ディレクトリ２１０１および子ディレクトリ２１０２それぞれのディレクトリエントリ３００のサイズ領域３０７には、ファイル２１０３のファイルサイズＳ１のみが格納されている。
【００７３】
次に、本実施形態における子ディレクトリ内のディレクトリを削除する場合の処理フローを説明する。図２２は、本実施形態において、子ディレクトリ内のディレクトリを削除する場合の処理フローを示す図である。同図に従い、図２１を例として、各処理について説明する。
【００７４】
ステップＳ２２０１では、ファイル管理装置１００は、子ディレクトリ１５０２に対応するディレクトリエントリ３００のサイズ領域３０７に格納しているファイルサイズの合計（Ｓ１＋Ｓ２）を取得する。ステップＳ２２０２では、ファイル管理装置１００は、ディレクトリ２１０４が子ディレクトリ１５０２内から削除された場合、ディレクトリ２１０４のディレクトリサイズであるサイズＳ２を取得する。ステップＳ２２０３では、ファイル管理装置１００は、ステップＳ２２０１で取得されたファイルサイズの合計（Ｓ１＋Ｓ２）から、ステップＳ２２０２で取得されたディレクトリサイズＳ２を差し引く。ステップＳ２２０４では、ファイル管理装置１００は、ステップＳ２２０３で取得された差分Ｓ１を、ディレクトリ２１０２に対応するディレクトリエントリ３００のサイズ領域３０７に格納する。ステップＳ２２０５では、ファイル管理装置１００は、ディレクトリエントリ３００が更新されたディレクトリの上位にあるディレクトリのディレクトリエントリ３００を更新する。本ステップにおける更新は、前述の図１４のサブルーチンを用いて実行される。
【００７５】
以上の処理により、本実施形態においては、子ディレクトリのファイルサイズの合計値を、最も上位のディレクトリであるルートディレクトリまで反映させるようにすることが出来る。よって、ディレクトリ内に含まれる全ファイルのファイルサイズの合計値を取得する必要が生じた場合、合計処理を改めて行う必要がなく、当該ディレクトリのディレクトリエントリを参照することにより高速にファイルサイズの合計値を取得することが出来る。また、ディレクトリエントリを利用しているため、一般的なファイルシステムにおいて本実施形態の方法を容易に実装することが可能となる。
【００７６】
尚、本実施形態においては、子ディレクトリのディレクトリエントリに格納されているファイルサイズの合計値に基づきファイルのファイルサイズの合計値を算出した。しかしながら、子ディレクトリのディレクトリエントリを参照せずに、全てのファイルのファイルサイズを合計し、合計値をルートディレクトリのディレクトリエントリに格納しても良い。
【００７７】
尚、上記実施形態においては、組み込み機器などで多く用いられているＦＡＴファイルシステムの構造を前提として説明した。しかしながら、本実施形態は、ＦＡＴファイルシステムを用いた情報処理装置に限定されるものではなく、ｅｘｔファイルシステムなどの他のファイルシステムを用いることも可能である。
【００７８】
（その他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００７９】
２００  外部記憶装置
２０１  ブートセクタ
２０２  ＦＡＴ領域
２０３  データ領域
３００  ディレクトリエントリ
３０１  ファイル／ディレクトリ名
【図１】
2016024487.tif 000003
【図２】
2016024487.tif 000004
【図３】
2016024487.tif 000005
【図４】
2016024487.tif 000006
【図５】
2016024487.tif 000007
【図６】
2016024487.tif 000008
【図７】
2016024487.tif 000009
【図８】
2016024487.tif 000010
【図９】
2016024487.tif 000011
【図１０】
2016024487.tif 000012
【図１１】
2016024487.tif 000013
【図１２】
2016024487.tif 000014
【図１３】
2016024487.tif 000015
【図１４】
2016024487.tif 000016
【図１５】
2016024487.tif 000017
【図１６】
2016024487.tif 000018
【図１７】
2016024487.tif 000019
【図１８】
2016024487.tif 000020
【図１９】
2016024487.tif 000021
【図２０】
2016024487.tif 000022
【図２１】
2016024487.tif 000023
【図２２】
2016024487.tif 000024