説明

ファイル分割装置、ファイル分割方法、及びプログラム

【課題】複数のクラスタで構成されるファイルデータの分割を簡易化、効率化し、且つユーザが所望するデータが所望するファイルに含まれるようになるファイル分割装置等を提供することを目的とする。
【解決手段】記録媒体に複数の管理単位で記録されているファイルデータの中から、分割命令が指示されたときに読み込んでいたデータの属する管理単位を特定し、特定した管理単位の前後の管理単位との境界位置を検出する境界検出部と、境界検出部で検出された境界の中から分割位置を決定し、分割位置までを1つのファイルとして管理する第1の管理情報と、分割位置からをもう1つのファイルとして管理する第2の管理情報とに管理情報を変更することによって課題を解決する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ファイル分割装置、ファイル分割方法、及びプログラムに関する。
【背景技術】
【0002】
記憶装置上には、記憶領域を管理する目的でファイルシステムが搭載されることが多く、その中でFAT(File Allocation Table)ファイルシステムは、組込み向け機器に多く搭載されている。FATファイルシステムは、記憶領域のファイルデータを記録するデータ領域と、データ領域に保存されているファイルデータの構成を管理するFAT領域を含むシステム領域とを含んで構成されている。
データ領域は、複数の管理単位(クラスタ)から構成され、1つのファイルデータは、1つのクラスタにより、或いは複数のクラスタがつながって構成されている。
【0003】
近年の組込み機器では、記録されているファイルデータの不要部分を削除するなどのファイルデータの編集作業を機器上で実現することが求められている。
ここで、編集中のファイルデータに対して、クラスタの途中で分割要求があった場合は、分割地点とされたクラスタの途中からそのファイルデータの最後までを別のデータ領域に複写していた。そして、元のファイルデータの先頭から分割地点までを1つのファイルデータとする。そして、別のデータ領域に複写した分割地点から元のファイルデータの最後までのファイルデータを他方のファイルデータとすることでファイルデータの分割を実現していた。また、分割地点とされたクラスタのみを別領域に複写する方法も開示されている(特許文献1参照)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2008−010110号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、従来の技術で複数のクラスタで構成されるファイルデータの分割をクラスタの途中で行う場合は、最低でも1つのクラスタのファイルデータを別領域に複写する必要がある。このため、記憶領域の資源や複写に要する時間の点で問題がある。
一方で、ファイルデータを構成する複数のクラスタの、あるクラスタとその次のクラスタとの境界(以下、クラスタ境界と呼ぶ)でのみファイルデータを分割する手法もある。
しかしながら、この手法では、クラスタの途中が分割位置に指定されると、分割位置に指定されたクラスタのクラスタ境界の先頭、若しくは末尾のどちらかを分割位置として選択する必要がある。この際、分割するクラスタ境界の先頭、若しくは末尾のどちらかをファイルデータの分割位置として固定してしまうと、分割位置に指定したクラスタ中に存在するファイルデータが、ユーザの望むファイルに入らない可能性がある。
【0006】
本発明はこのような問題点に鑑みなされたもので、複数のクラスタで構成されるファイルデータの分割を簡易化、効率化し、且つユーザが所望するデータが所望するファイルに含まれるようになるファイル分割装置等を提供することを目的とする。
【課題を解決するための手段】
【0007】
そこで、本発明に係るファイル分割装置は、記録媒体の記録領域に複数の管理単位で記録されているファイルデータを分割するファイル分割装置であって、前記記録媒体に複数の管理単位で記録されているファイルデータの中から、分割命令が指示されたときに読み込んでいたデータの属する管理単位を特定する特定部と、前記特定部で特定された管理単位の前後の管理単位との境界位置を検出する境界検出部と、前記境界検出部で検出された境界の中から分割位置を決定する決定部と、前記分割位置までを1つのファイルとして管理する第1の管理情報と、前記分割位置からをもう1つのファイルとして管理する第2の管理情報とに管理情報を変更する管理部とを有することを特徴とする。
【発明の効果】
【0008】
本発明によれば、複数のクラスタで構成されるファイルデータの分割を簡易化、効率化し、且つユーザが所望するデータが所望するファイルに含まれるようになる。
【図面の簡単な説明】
【0009】
【図1】ファイル分割装置の構成の一例を示す図である。
【図2】ファイル管理の構成の一例を示す図である。
【図3】ファイルオフセット記憶領域とファイルデータの一例を示す図である。
【図4】ファイル分割位置特定処理に係るフローチャートの一例を示す図である。
【図5】ファイルの編集方向と分割位置の一例を示す図である。
【図6】ファイル分割処理に係るフローチャートの一例を示す図である。
【図7】ファイル分割処理後の構成の一例を示す図である。
【発明を実施するための形態】
【0010】
以下、本発明の実施形態について図面に基づいて説明する。なお、実施形態は、本発明を限定するものではなく、また、実施形態で説明されている全ての構成が本発明の課題を解決するための手段に必須であるとは限らない。
【0011】
本発明の実施形態に関するファイル分割装置の構成について、図1を参照して説明する。なお、ファイル分割装置は、情報処理装置(コンピュータ)の一例(情報処理装置100)である。
中央処理ユニット101は、情報処理装置100全体を制御する。Read Only Memory(ROM)102は、変更を必要としないプログラムやパラメータなどを格納する。Random Access Memory(RAM)103は、記録媒体の一例であり、外部装置などから供給されるプログラムやデータなどを一時記憶する。外部記憶装置104は、情報処理装置100から着脱可能なSDカードなどのメモリカードや光ディスク、或いは情報処理装置100に固定して設置されたハードディスクなどの記録媒体を有する。バス105は、情報処理装置100の外部記憶装置104などの各デバイスを接続する。
【0012】
また、ROM102上のアプリケーションプログラム107は、ファイルシステムプログラム108を介して外部記憶装置104上のデータをやりとりする。ファイルシステムプログラム108は、以下の機能を有する。
なお、本実施形態では、中央処理ユニット101が、ROM102に格納されたプログラムの手順に従って処理を行うことによって、情報処理装置100における機能及び後述するフローチャートに係る処理が実現される。
クラスタ特定部109は、外部記憶装置104を構成する複数の管理単位(以下、クラスタと呼ぶ)の中から、あるクラスタを特定する。クラスタ境界検出部110は、あるクラスタの前後のクラスタの境界位置を検出する。ファイル分割位置決定部111は、クラスタ境界検出部110で検出された境界位置のクラスタ境界の中からファイル(ファイルデータ)の分割位置を決定する。
【0013】
クラスタ境界判定部112は、ファイル分割命令が指示された位置がクラスタ境界にあるかを判定する。管理情報管理部の一例であるディレクトリエントリ操作部113は、ファイルの管理情報の読み書き処理を行う。FAT操作部114は、FAT(File Allocation Table)の項目の読み書きを行う。編集方向検出部115は、ファイルの編集が先頭方向、若しくは末尾方向へ向かっていることを検出する。ファイルデータ操作部116は、外部記憶装置104上のファイルデータの読み書きを行う。
また、RAM103上にはファイルの編集方向を検知するために用いられるファイルオフセット記憶領域106が存在する。
【0014】
外部記憶装置104は、図2(a)に示すように、ブートセクタ201とFAT領域202と、データ記録領域203とを含んで構成されている。ブートセクタ201は、ファイルシステムの構成などを管理する。FAT領域202は、データ記録領域203上のデータの構成を管理する。データ記録領域203は、データを記録する。
図2(b)は、FATファイルシステムにおけるファイル管理の概略を示す。データ記録領域206は、複数のクラスタで構成され、各クラスタに対して一意に決まる管理番号(以下、クラスタ番号と呼ぶ)が割り当てられている。各クラスタには、ファイルの実データ(以下、ファイルデータと呼ぶ)が記録される。1つのファイルデータは、単一若しくは複数のクラスタで構成される。
FAT205上には、各クラスタに対応する項目が存在し、ファイルデータの構成を管理している。より具体的には、複数のクラスタで構成されるファイルデータがファイルデータ207である場合、FAT205上の各クラスタ番号に対応する項目には、そのクラスタの次のクラスタのクラスタ番号が記録されている。
【0015】
また、単一又は複数クラスタで構成されているファイルデータの最後のクラスタ(以下、終了クラスタ)のクラスタ番号に対応するFAT205上の項目には「終了」記号が記録されている。したがって、最初のクラスタ(以下、開始クラスタ)のクラスタ番号から終了クラスタまでFAT205上の対応する項目を辿ることによって、複数のクラスタから成るファイルデータ207の構成を復元することが可能である。
また、データ記録領域206に記録するファイルデータ207を管理するために必要な情報を記録するディレクトリエントリ204が外部記憶装置104等に設けられている。ディレクトリエントリ204には、記録しているファイルデータのファイル名、開始クラスタのクラスタ番号などが記録されている。ディレクトリエントリ204は、データ記録領域206に記録されているファイルデータの中から、目的のファイルデータを一意に特定するために記録されている。
【0016】
以下では、外部記憶装置104上のファイルデータの分割について説明する。ファイルデータの分割は、ファイルデータの一定量の読出しを繰り返し行い、ファイルデータの分割を行いたい地点のデータが読み出された後にファイル分割命令が指示されて実行される。
本実施形態では、情報処理装置100は、ファイル分割命令が指示されたときに、指示された位置がクラスタの途中に存在する場合でも、ファイルの分割位置(ファイル分割位置)を必ずクラスタ境界に設定する。ファイル分割位置をクラスタ境界に設定することで、ファイルデータの分割を簡易化することやファイルデータの分割に要する時間を短縮することができる。
また、情報処理装置100は、ファイル分割位置をクラスタ境界に設定する際に、ファイルの編集方向を検知する。そして、情報処理装置100は、その編集方向によって、該ファイルの管理情報を第1の管理情報と第2の管理情報とに変更してクラスタ境界を変えることで、目的のデータを分割後の所望のファイルに含ませることができる。
【0017】
以上の処理形態を実現するファイルデータの分割方法について説明する。図3に示すように、RAM103上には、ファイルデータの先頭からのバイト単位の位置の値(以下、ファイルオフセット値と呼ぶ)が格納される領域(ファイルオフセット記憶領域106)が存在する。ファイルオフセット記憶領域106は、3つの領域から成る。
ファイルオフセット記憶領域Oc301は、現在のファイルオフセット値が記録されている。ファイルデータの読出しは、ファイルオフセット記憶領域Oc301に保存されているファイルオフセット値から行われる。ファイルオフセット記憶領域Ohc302は、現在のファイルデータの読出し開始位置を覚えておく(保持する)領域である。
【0018】
ファイルオフセット記憶領域Oho303は、1つ前のファイルデータの読出しのときのファイルデータの読出し開始位置を覚えておく領域である。ファイルオフセット記憶領域Ohc302とファイルオフセット記憶領域Oho303とは、ファイルの編集方向を検出するために用いられる。
分割対象となるファイルデータ207をデータの編集を目的として読み出すとき、ファイルオフセット記憶領域Oc301は、「0」で初期化され、その後、アプリケーションプログラムによって適当な値が設定される。また、ファイルオフセット記憶領域Ohc302とファイルオフセット記憶領域Ohoとの値は、全て「0」で初期化される。
【0019】
<ファイル分割位置特定処理>
図4は、ファイル分割位置を特定する処理(ファイル分割位置特定処理)に係るフローチャートの一例を示す図である。
S400において、ファイルシステムプログラム108は、ファイルオフセット記憶領域Ohc302、ファイルオフセット記憶領域Oho303の値を「0」に初期化し、S401の処理を行う。
【0020】
S401において、ファイルシステムプログラム108は、ファイルオフセット記憶領域Ohc302に保存されているファイルオフセット値をファイルオフセット記憶領域Oho303に保存し、S402の処理を行う。
S402において、ファイルシステムプログラム108は、ファイルオフセット記憶領域Oc301に保存されているファイルオフセット値をファイルオフセット記憶領域Ohc302に保存し、S403の処理を行う。
S403において、ファイルシステムプログラム108は、ファイルデータのうち、ファイルオフセット記憶領域Oc301に保存されているファイルオフセット値からデータを読み出し、S404の処理を行う。
【0021】
S404において、ファイルシステムプログラム108は、読み出されたファイルデータのバイト単位のデータサイズをファイルオフセット記憶領域Oc301に保存されている値に足し込む。その結果、ファイルオフセット記憶領域Oc301に保存されている値は、データを読出し後のファイルオフセット値となる。続いて、ファイルシステムプログラム108は、S405の処理を行う。
S405において、ファイルシステムプログラム108は、ファイル分割が指示されたか否か(ファイル分割命令があったか否か)を判断する。このとき、ファイル分割が指示されたと判断した場合、ファイルシステムプログラム108は、S406の処理を行い、他方、ファイル分割の指示がなく、ファイルデータの読出しを続けると判断した場合、S412の処理を行う。
【0022】
S412において、ファイルシステムプログラム108は、ファイルデータの読出し(編集)を終了するか否かを判断する。このとき、ファイルデータの読出し自体を終了すると判断した場合、ファイルシステムプログラム108は、ファイル分割位置特定処理を終了する。他方、ファイルデータの読出しを継続すると判断した場合、ファイルシステムプログラム108は、S401の処理を行う。
S406において、ファイルシステムプログラム108は、ファイルオフセット記憶領域Oc301に保存されているファイルオフセット値がクラスタ境界に位置しているか否かを判断する。このとき、ファイルオフセット記憶領域Oc301のファイルオフセット値がクラスタ境界に位置していると判断した場合、ファイルシステムプログラム108は、ファイルオフセット値をファイル分割位置とし、S411の処理を行う。他方、ファイルオフセット記憶領域Oc301のファイルオフセット値がクラスタ境界に位置していないと判断した場合、ファイルシステムプログラム108は、S407の処理を行う。
【0023】
S407において、ファイルシステムプログラム108は、ファイルオフセット記憶領域Oc301に保存されているファイルオフセット値が属するクラスタ(以下、分割位置クラスタと呼ぶ)を特定し、S408の処理を行う。
S408において、ファイルシステムプログラム108は、ファイルオフセット記憶領域Ohc302に保存されているファイルオフセット値とファイルオフセット記憶領域Oho303に保存されているファイルオフセット値とを比較する。このとき、ファイルシステムプログラム108は、ファイルオフセット記憶領域Ohc302のファイルオフセット値がファイルオフセット記憶領域Oho303のファイルオフセット値よりも大きいと判断した場合、S409の処理を行う。それ以外の場合、ファイルシステムプログラム108は、S410の処理を行う。
【0024】
ここで、ファイルオフセット記憶領域Ohc302に保存されているファイルオフセット値としては、ファルデータの今回の読出し開始位置が保存されている。また、ファイルオフセット記憶領域Oho303に保存されているファイルオフセット値としては、ファイルデータの前回の読出し開始位置が保存されている。
例えば、図5(a)に示すように、ファイルデータの今回の読出し開始位置が、ファイルデータの前回の読出し開始位置よりも末尾方向にある場合、ファイルシステムプログラム108は、S409の処理を行う。他方、図5(b)に示すように、ファイルデータの今回の読出し開始位置がファイルデータの前回の読出し開始位置よりも先頭方向にある場合、ファイルシステムプログラム108は、S410の処理を行う。
【0025】
S409において、ファイルシステムプログラム108は、分割位置クラスタの末尾をファイル分割位置とし、ファイル分割位置特定処理を終了し、S411のファイル分割処理を行う。
S410において、ファイルシステムプログラム108は、分割位置クラスタの先頭をファイル分割位置とし、ファイル分割位置特定処理を終了し、ファイル分割処理を行う。
以上の処理により、ファイル分割命令がクラスタの途中で指示された場合でも、ファイル分割位置を自動でクラスタ境界に設定することができる。
【0026】
<ファイル分割処理>
また、ファイルシステムプログラム108は、決定したファイル分割位置でファイル分割処理を開始する。図6は、ファイル分割処理に係るフローチャートの一例を示す図である。
S600において、ファイルシステムプログラム108は、図7に示すように、ファイルデータ207を構成する複数のクラスタの中から、ファイル分割位置707がクラスタの先頭となるクラスタ706を特定し、S601の処理を行う。
S601において、ファイルシステムプログラム108は、ファイルデータ207を構成する複数のクラスタの中から、ファイル分割位置707がクラスタの末尾となるクラスタ705を特定し、S602の処理を行う。
【0027】
S602において、ファイルシステムプログラム108は、クラスタ705に対応するFAT上の項目703に「終了」記号を記録し、S603の処理を行う。
S603において、ファイルシステムプログラム108は、ファイル分割処理後に生成される新しいファイル(ファイルデータ)のディレクトリエントリ702を作成し、S604の処理を行う。
S604において、ファイルシステムプログラム108は、クラスタ706のクラスタ番号をディレクトリエントリ702の開始クラスタ番号に記録し、ファイル分割処理を終了する。
【0028】
以上の処理により、ファイルデータ207は、クラスタ705までのファイルデータが属する前部ファイルデータとクラスタ706から始まるファイルデータが属する後部ファイルデータとに分割される。前部ファイルデータは、ディレクトリエントリ701により管理され、後部ファイルデータは、ディレクトリエントリ702により管理される。
このように、情報処理装置100は、外部記憶装置104に記録されているファイルデータ207を分割するとき、ファイル分割位置を必ずクラスタ境界に位置するように設定する。そして、情報処理装置100は、ファイル分割位置がクラスタの末尾となるクラスタ705に対応するFAT205上の項目703に「終了」記号を記録する。また、情報処理装置100は、ファイル分割位置がクラスタの先頭となるクラスタ706から始まるファイルデータのディレクトリエントリ702を作成する。
すなわち、本実施形態では、FAT205上の項目703に「終了」記号を記録し、ディレクトリエントリ702を作成するだけで、ファイルデータ207の分割を実現することができる。
【0029】
また、情報処理装置100は、先頭クラスタ304から終了クラスタ308の複数のクラスタで構成されている例えば図5のファイルデータ207を編集しているとき、ファイルデータ207の編集方向をファイルオフセット記憶領域106の値に基づいて検知する。
よって、情報処理装置100は、例えば、ファイルデータ207の編集がファイルの末尾へ順方向に行われていると判断できる。そして、情報処理装置100は、ファイルの編集が順方向に行われているときにファイル分割命令が指示された場合、ファイルの編集が順方向に行われていると判断し、ファイル分割位置501を分割位置クラスタ306の末尾に設定する。
即ち、情報処理装置100は、分割位置クラスタ306のデータがファイル分割処理後の前方のファイルに含まれるべきであると判断し、ファイル分割位置501を分割位置クラスタ306の末尾に設定する。この場合、分割位置クラスタ306のデータは、ファイル分割処理後の前方のファイルに含まれる。
【0030】
一方で、情報処理装置100は、例えば、ファイルデータ207の編集がファイルの先頭へ逆方向に行われていると判断できる。そして、情報処理装置100は、ファイルの編集が逆方向に行われているときにファイル分割命令が指示された場合、ファイルの編集が逆方向に行われていると判断し、ファイル分割位置502を分割位置クラスタ306の先頭に設定する。
即ち、情報処理装置100は、分割位置クラスタ306のデータがファイル分割処理後の後方のファイルに含まれるべきであると判断し、ファイル分割位置502を分割位置クラスタ306の先頭に設定する。この場合、分割位置クラスタ306のデータは、ファイル分割処理後の後部のファイルに含まれる。
【0031】
以上のように、情報処理装置100は、ファイルデータの読み出し位置の変化によって、分割位置クラスタ中の所望のデータを、ファイル分割後の所望のファイルに含ませることができるクラスタ境界にファイル分割位置を自動で決定する。
また、情報処理装置100は、ファイル分割処理において、ファイル分割命令が指示されたときに、ファイルデータの読出し位置の変化によって、ファイル分割位置が自動で決定することができるので、ファイル分割処理を簡易化することができる。
また、上述の構成によれば、ファイル分割位置が必ずクラスタ境界に設定されることで、ファイルデータのクラスタ単位での複写を無くすことができる。
したがって、本実施形態の構成によれば、外部記憶装置104の資源の効率化を図ることができ、ファイル分割処理に要する時間の短縮をすることができる。また、本実施形態の構成によれば、外部記憶装置に記録しているファイルデータのファイル分割処理の処理コストを軽減することができる。なお、本発明はコンピュータのプログラムによっても実現できる。
【0032】
<その他の実施形態>
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(又はCPUやMPU等)がプログラムを読み出して実行する処理である。
【0033】
上述した実施形態の構成によれば、複数のクラスタで構成されるファイルデータの分割を簡易化、効率化し、且つユーザが所望するデータが所望するファイルに含まれるようになる。
【0034】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【0035】
104 外部記憶装置、106 ファイルオフセット記憶領域、108 ファイルシステムプログラム

【特許請求の範囲】
【請求項1】
記録媒体の記録領域に複数の管理単位で記録されているファイルデータを分割するファイル分割装置であって、
前記記録媒体に複数の管理単位で記録されているファイルデータの中から、分割命令が指示されたときに読み込んでいたデータの属する管理単位を特定する特定部と、
前記特定部で特定された管理単位の前後の管理単位との境界位置を検出する境界検出部と、
前記境界検出部で検出された境界の中から分割位置を決定する決定部と、
前記分割位置までを1つのファイルとして管理する第1の管理情報と、前記分割位置からをもう1つのファイルとして管理する第2の管理情報とに管理情報を変更する管理部と
を有することを特徴とするファイル分割装置。
【請求項2】
記録媒体の記録領域に複数の管理単位で記録されているファイルデータを分割するファイル分割方法であって、
前記記録媒体に複数の管理単位で記録されているファイルデータの中から、分割命令が指示されたときに読み込んでいたデータの属する管理単位を特定する特定工程と、
特定された管理単位の前後の管理単位との境界位置を検出する境界検出工程と、
検出された境界の中から分割位置を決定する決定工程と、
前記分割位置までを1つのファイルとして管理する第1の管理情報と、前記分割位置からをもう1つのファイルとして管理する第2の管理情報とに管理情報を変更する管理工程と
を有することを特徴とするファイル分割方法。
【請求項3】
請求項2記載のファイル分割方法の各工程をコンピュータにて実行させるプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2012−137955(P2012−137955A)
【公開日】平成24年7月19日(2012.7.19)
【国際特許分類】
【出願番号】特願2010−290174(P2010−290174)
【出願日】平成22年12月27日(2010.12.27)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】