一种文件管理方法及管理系统的制作方法

文档序号:6549250阅读:180来源:国知局
一种文件管理方法及管理系统的制作方法
【专利摘要】本发明适用于计算机存储【技术领域】,提供了一种文件管理方法及管理系统,所述方法包括:将一个连续的flash划分为大小相同的N个块,所述N为大于1的整数,所述块以编号进行标识;在所述块N个块中按照预设格式保存文件信息与文件数据、目录信息与目录数据,所述预设格式包括第一文件块、第二文件块、第一目录块和第二目录块。本发明,将四种不同类型的块组织起来,建立一个文件系统,在多级目录下,减少了目录的重复存储,节约了存储空间,提高了存储空间的利用率。
【专利说明】一种文件管理方法及管理系统

【技术领域】
[0001]本发明属于计算机存储【技术领域】,尤其涉及一种文件管理方法及管理系统。

【背景技术】
[0002]大容量的Flash存储器在嵌入式开发中被广泛应用,Flash存储器由于存储容量大、掉电数据不丢失、可多次擦写等优点,正逐步取代其它半导体存储器件而广泛应用于移动电话、PDA、数码相机等移动电子产品中。作为存储数据和应用程序的媒体,Flash存储器可以将大量数据方便、快捷地移动和交换。为了方便管理flash存储器,都要建立文件系统,文件系统是一种存储和组织计算机数据的方法,其中,FAT文件系统是Falsh存储器常用的文件系统。计算机将信息保存在硬盘上称为“簇”的区域内,一般来说使用的簇越小,保存信息的效率就越高,在FAT16的情况下,分区越大,簇就相应的要增大,存储效率就越低,势必造成存储空间的浪费。


【发明内容】

[0003]本发明实施例提供了一种文件管理方法及管理系统,旨在解决现有文件系统中存储效率低,多级目录重复,浪费存储空间的问题。
[0004]一方面,提供一种文件管理方法,所述方法包括:
[0005]将一个连续的flash划分为大小相同的N个块,所述N为大于I的整数,所述块以编号进行标识;
[0006]在所述块N个块中按照预设格式保存文件信息与文件数据、目录信息与目录数据,所述预设格式包括第一文件块、第二文件块、第一目录块和第二目录块,其中,所述一个文件信息与文件数据可保存于一个第一文件块,或一个第一文件块以及多个第二文件块,有多个所述第二文件块时,所述第一文件块与第一个所述第二文件块双向关联,所述第二文件块依次双向关联;所述一个目录信息与目录数据可保存于一个第一目录块,或一个第一目录块以及多个第二目录块,有多个所述第二目录块时,所述第一目录块与第一个所述第二目录块双向关联,所述第二目录块依次双向关联,所述第一目录块和第二目录块关联所有子目录和所述第一文件块的编号、第二文件块的编号以便对文件操作管理。
[0007]另一方面,提供一种文件管理系统,所述系统包括:
[0008]块划分单元,用于将一个连续的flash划分为大小相同的N个块,所述N为大于I的整数,所述块以编号进行标识;
[0009]文件管理单元,用于在所述块N个块中按照预设格式保存文件信息与文件数据、目录信息与目录数据,所述预设格式包括第一文件块、第二文件块、第一目录块和第二目录块,其中,所述一个文件信息与文件数据可保存于一个第一文件块,或一个第一文件块以及多个第二文件块,有多个所述第二文件块时,所述第一文件块与第一个所述第二文件块双向关联,所述第二文件块依次双向关联;所述一个目录信息与目录数据可保存于一个第一目录块,或一个第一目录块以及多个第二目录块,有多个所述第二目录块时,所述第一目录块与第一个所述第二目录块双向关联,所述第二目录块依次双向关联,所述第一目录块和第二目录块关联所有子目录和所述第一文件块的编号、第二文件块的编号以便对文件操作管理。
[0010]在本发明实施例,将四种不同类型的块组织起来,建立一个文件系统,在多级目录下,减少了目录的重复存储,节约了存储空间,提高了存储空间的利用率。

【专利附图】

【附图说明】
[0011]图1是本发明实施例一提供的文件管理方法的实现流程图;
[0012]图2是本发明实施例一提供的块划分示意图;
[0013]图3是本发明实施例一提供的四种块结构示意图;
[0014]图4是本发明实施例一提供的文件管理文件存储示意图;
[0015]图5是本发明实施例一提供的检查文件是否存在的示意图;
[0016]图6是本发明实施例一提供的打开文件的示意图;
[0017]图7是本发明实施例一提供的定位文件的示意图;
[0018]图8是本发明实施例一提供的读写文件的示意图;
[0019]图9是本发明实施例二提供的文件管理系统的具体结构框图。

【具体实施方式】
[0020]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0021]以下结合具体实施例对本发明的实现进行详细描述:
[0022]实施例一
[0023]图1示出了本发明实施例一提供的文件管理方法的实现流程,详述如下:
[0024]需要说明的是,本发明尤其适用于在使用Flash存储器的移动电话、PDA、数码相机等智能终端中。
[0025]在步骤SlOl中,将一个连续的flash划分为大小相同的N个块,所述N为大于I的整数,所述块以编号进行标识。
[0026]在本实施例中,如图2所示,整个flash由N个块block组成,每个block有一个编号,从O到η,每个block大小固定的,每个目录或者文件由至少一个block组成。
[0027]在步骤S102中,在所述块N个块中按照预设格式保存文件信息与文件数据、目录信息与目录数据,所述预设格式包括第一文件块、第二文件块、第一目录块和第二目录块,其中,所述一个文件信息与文件数据可保存于一个第一文件块,或一个第一文件块以及多个第二文件块,有多个所述第二文件块时,所述第一文件块与第一个所述第二文件块双向关联,所述第二文件块依次双向关联;所述一个目录信息与目录数据可保存于一个第一目录块,或一个第一目录块以及多个第二目录块,有多个所述第二目录块时,所述第一目录块与第一个所述第二目录块双向关联,所述第二目录块依次双向关联,所述第一目录块和第二目录块关联所有子目录和所述第一文件块的编号、第二文件块的编号以便对文件操作管理。
[0028]在本实施例中,块预设格式具体如图3所示,所述第一文件块FileBlockA由文件名name、后驱节点next、根节点parent、数据长度datalen、数据data组成,所述第二文件块FileBlockB由前驱节点prev、后驱节点next、数据长度datalen、文件数据data组成,所述第一目录块DirBlockA由目录名name、后驱节点next、根节点parent、数据data组成,所述第二目录块DirBlockB由前驱节点prev、后驱节点next、数据长度datalen、目录数据data组成。该文件系统具体如图4所示,DirBlockA的data中保存了,当前目录下所有子目录以及文件第一个FileBlockA的编号,如果是文件的话,会在编号上加上一个标志,如I表示该块为文件块,否则为目录块,当目录下文件或者目录比较多而一个DirBlockA保存不了的时候,会使用第二个DirBlockB,第三个DirBlockB,直到足够保存子文件和子目录编号信息。FileBlockA保存某个文件的文件名,以及文件数据,当一个FileBlockA不够保存该文件数据的时候,会使用第二个FileBlockB,第三个FileBlockB,直到足够保存文件数据。FileBlockB中prev, next保存的是前后FileBlockB的编号。
[0029]作为一个可选方案,还包括以文件所在当前目录匹配所述第一目录块,若匹配,则逐一以所述当前目录下的子目录匹配所述第二目录块,直至最后匹配所述文件的名称,若匹配,则返回存在,若否,则返回不存在。
[0030]其中,在多级目录文件系统中,例如root/subdir/file.dat检查文件file, dat是否存在,如图5所示,根据路径,找到当前目录所在block,匹配目录名是否与block中保存的一样,相同则在该目录下匹配其子目录与路径下级目录的名字,直到最后匹配文件名,找到则返回存在,否则返回不存在。
[0031]作为另一个可选方案,还包括接收打开指令,检查文件是否存在,若文件存在,根据打开模式,创建一个文件句柄以保存文件目录块,所述文件目录块是从flash中分配的空闲块,所述空闲块保存了文件名、以及保存文件信息与文件数据的所述第一文件块的编号、所述第二文件块的编号。
[0032]其中,根据打开模式,仓Il建一个文件句柄handle,当前块的编号,即curblock,当前block偏移位置,即currentOffset,当不是以只读的方式打开一个不存在的文件时候,需要创建一个文件,文件创建过程如图6所示,首先定位到文件所在目录,从flash中分配出一个空闲第一目录块,将文件名,保存至空闲第一目录块中,并且把第一文件块、第二文件块的编号保存在目录中空闲位置。
[0033]作为另一个可选方案,还包括接收定位指令,查询文件对应的第一定位块,并将所述第一定位块和所述第一定位块的编号保存于所述文件句柄中。
[0034]其中,具体的,需要找到定位开始的FirstSeekBlock,有以下三种情况:
[0035]第一情况是,从文件头开始定位则FirstSeekBlock为文件第一个第一文件块;
[0036]第二情况是,从文件当前位置定位从打开文件的handle中获取FirstSeekBlock ;
[0037]第三情况是,从文件尾定位,文件最后一个第二文件块为FirstSeekBlock ;
[0038]当定位长度超过当前文件块,则剩下的定位下一个文件块,过程如图7所示,偏移到相应的文件块,返回文件块编号,以及当前文件块的当前位置存放在该文件handle中。
[0039]作为另一个可选方案,还包括接收读取指令,将所述文件句柄中保存的编号对应的所述第一文件块或所述第二文件块中文件信息和文件数据拷贝至缓冲器中。
[0040]其中,从handle中获取当前块的编号以及当前位置,将块中的data拷贝到缓冲器Buffer中,读完,设置handle下新的当前块,以及位置,如图8所示,以便下次读,从新的位置开始。
[0041]作为另一个可选方案,还包括接收写入指令,将所述缓冲器中的文件信息和文件数据拷贝至所述第一文件块或所述第二文件块中,已有所述第二文件块写满后,设置所述文件句柄中新的所述第二文件块。
[0042]其中,从handle中获取当前块的编号以及当前位置,将块中的data拷贝到缓冲器Buffer中,当文件写满了,需要分配一个新的block保存数据,将新block编号保存在上一个block的next中,将上一个block的编号保存在新block的prev中,建立双向链表,再把剩余数据拷贝进去,读完,设置handle下新的当前块,以及位置,如图8所示,以便下次与。
[0043]作为另一个可选方案,还包括从文件对应的所述第一文件块开始,当前所述第二文件块之前的所有所述第二文件块的有效数据长度以及当前所述第二文件块的偏移大小相加,获取当前位置相对于文件首偏移字节数。
[0044]其中,在计算整个文件偏移位置,需要从文件第一个第一文件块开始,当前块之前每个块有效数据长度加起来,再加上当前块的偏移大小,即为整个文件当前位置相对于文件首偏移字节数。
[0045]作为另一个可选方案,还包括根据所述文件句柄中所有所述第一文件块、所述第二文件块的有效数据长度,获取文件长度。
[0046]其中,每个块都保存了有效数据的长度,如图3中FileBlockA、FileBlockB,从文件句柄handle中获取该文件第一个第一文件块,从第一个第一文件块中保存的next找到第一个第二文件块,第一个第二文件块的next找到第二个第一个第二文件块,一直找到最后一个第一个第二文件块。将每个块中的datalen加起来,即为当前文件所有数据长度。
[0047]本实施例,将四种不同类型的块组织起来,建立一个文件系统,在多级目录下,减少了目录的重复存储,节约了存储空间,提高了存储空间的利用率。
[0048]实施例二
[0049]图9示出了本发明实施例二提供的文件管理系统的具体结构框图,为了便于说明,仅不出了与本发明实施例相关的部分。在本实施例中,该文件管理系统包括:块划分单元91和文件管理单元92。
[0050]其中,块划分单元91,用于将一个连续的flash划分为大小相同的N个块,所述N为大于I的整数,所述块以编号进行标识;
[0051]文件管理单元92,用于在所述块N个块中按照预设格式保存文件信息与文件数据、目录信息与目录数据,所述预设格式包括第一文件块、第二文件块、第一目录块和第二目录块,其中,所述一个文件信息与文件数据可保存于一个第一文件块,或一个第一文件块以及多个第二文件块,有多个所述第二文件块时,所述第一文件块与第一个所述第二文件块双向关联,所述第二文件块依次双向关联;所述一个目录信息与目录数据可保存于一个第一目录块,或一个第一目录块以及多个第二目录块,有多个所述第二目录块时,所述第一目录块与第一个所述第二目录块双向关联,所述第二目录块依次双向关联,所述第一目录块和第二目录块关联所有子目录和所述第一文件块的编号、第二文件块的编号以便对文件操作管理。
[0052]进一步地,所述文件管理单元92还包括:
[0053]文件检查模块921,用于以文件所述当前目录匹配所述第一目录块,若匹配,则逐一以所述当前目录下的子目录匹配所述第二目录块,直至最后匹配所述文件的名称,若匹配,则返回存在,若否,则返回不存在。
[0054]文件打开模块922,用于接收打开指令,检查文件是否存在,若文件存在,根据打开模式,创建一个文件句柄以保存文件目录块,所述文件目录块是从flash中分配的空闲块,所述空闲块保存了文件名、以及保存文件信息与文件数据的所述第一文件块的编号、所述第二文件块的编号。
[0055]文件定位模块923,用于接收定位指令,查询文件对应的第一定位块,并将所述第一定位块和所述第一定位块的编号保存于所述文件句柄中。
[0056]文件读取模块924,用于接收读取指令,将所述文件句柄中保存的编号对应的所述第一文件块或所述第二文件块中文件信息和文件数据拷贝至缓冲器中。
[0057]文件写入模块925,用于接收写入指令,将所述缓冲器中的文件信息和文件数据拷贝至所述第一文件块或所述第二文件块中,已有所述第二文件块写满后,设置所述文件句柄中新的所述第二文件块。
[0058]偏移计算模块926,用于从文件对应的所述第一文件块开始,当前所述第二文件块之前的所有所述第二文件块的有效数据长度以及当前所述第二文件块的偏移大小相加,获取当前位置相对于文件首偏移字节数。
[0059]长度计算模块927,用于根据所述文件句柄中所有所述第一文件块、所述第二文件块的有效数据长度,获取文件长度。
[0060]本实施例,将四种不同类型的块组织起来,建立一个文件系统,在多级目录下,减少了目录的重复存储,节约了存储空间,提高了存储空间的利用率。
[0061]本发明实施例提供的文件管理系统可以应用在前述对应的方法实施例一中,详情参见上述实施例一的描述,在此不再赘述。
[0062]值得注意的是,上述系统实施例中,所包括的各个单元只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
[0063]另外,本领域普通技术人员可以理解实现上述各实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,相应的程序可以存储于一计算机可读取存储介质中,所述的存储介质,如R0M/RAM、磁盘或光盘等。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种文件管理方法,其特征在于,所述方法包括: 将一个连续的flash划分为大小相同的N个块,所述N为大于I的整数,所述块以编号进行标识; 在所述块N个块中按照预设格式保存文件信息与文件数据、目录信息与目录数据,所述预设格式包括第一文件块、第二文件块、第一目录块和第二目录块,其中,所述一个文件信息与文件数据可保存于一个第一文件块,或一个第一文件块以及多个第二文件块,有多个所述第二文件块时,所述第一文件块与第一个所述第二文件块双向关联,所述第二文件块依次双向关联;所述一个目录信息与目录数据可保存于一个第一目录块,或一个第一目录块以及多个第二目录块,有多个所述第二目录块时,所述第一目录块与第一个所述第二目录块双向关联,所述第二目录块依次双向关联,所述第一目录块和第二目录块关联所有子目录和所述第一文件块的编号、第二文件块的编号以便对文件操作管理。
2.如权利要求1所述的方法,其特征在于,所述方法还包括: 以文件所在当前目录匹配所述第一目录块,若匹配,则逐一以所在当前目录下的子目录匹配所述第二目录块,直至最后匹配所述文件的名称,若匹配,则返回存在,若否,则返回不存在。
3.如权利要求2所述的方法,其特征在于,所述方法还包括: 接收打开指令,检查文件是否存在,若文件存在,根据打开模式,创建一个文件句柄以保存文件目录块,所述文件目录块是从flash中分配的空闲块,所述空闲块保存了文件名、以及保存文件信息与文件数据 的所述第一文件块的编号、所述第二文件块的编号。
4.如权利要求3所述的方法,其特征在于,所述方法还包括: 接收定位指令,查询文件对应的第一定位块,并将所述第一定位块和所述第一定位块的编号保存于所述文件句柄中。
5.如权利要求3所述的方法,其特征在于,所述方法还包括: 接收读取指令,将所述文件句柄中保存的编号对应的所述第一文件块或所述第二文件块中文件信息和文件数据拷贝至缓冲器中。
6.如权利要求5所述的方法,其特征在于,所述方法还包括: 接收写入指令,将所述缓冲器中的文件信息和文件数据拷贝至所述第一文件块或所述第二文件块中,已有所述第二文件块写满后,设置所述文件句柄中新的所述第二文件块。
7.如权利要求3、5或6所述的方法,其特征在于,所述方法还包括: 从文件对应的所述第一文件块开始,当前所述第二文件块之前的所有所述第二文件块的有效数据长度以及当前所述第二文件块的偏移大小相加,获取当前位置相对于文件首偏移字节数。
8.如权利要求3、5或6所述的方法,其特征在于,所述方法还包括: 根据所述文件句柄中所有所述第一文件块、所述第二文件块的有效数据长度,获取文件长度。
9.一种文件管理系统,其特征在于,包括: 块划分单元,用于将一个连续的flash划分为大小相同的N个块,所述N为大于I的整数,所述块以编号进行标识; 文件管理单元,用于在所述块N个块中按照预设格式保存文件信息与文件数据、目录信息与目录数据,所述预设格式包括第一文件块、第二文件块、第一目录块和第二目录块,其中,所述一个文件信息与文件数据可保存于一个第一文件块,或一个第一文件块以及多个第二文件块,有多个所述第二文件块时,所述第一文件块与第一个所述第二文件块双向关联,所述第二文件块依次双向关联;所述一个目录信息与目录数据可保存于一个第一目录块,或一个第一目录块以及多个第二目录块,有多个所述第二目录块时,所述第一目录块与第一个所述第二目录块双向关联,所述第二目录块依次双向关联,所述第一目录块和第二目录块关联所有子目录和所述第一文件块的编号、第二文件块的编号以便对文件操作管理。
10.如权利要求9所述的系统,其特征在于,所述文件管理单元还包括: 文件检查模块,用于以文件所在当前目录匹配所述第一目录块,若匹配,则逐一以所在当前目录下的子目录匹配所述第二目录块,直至最后匹配所述文件的名称,若匹配,则返回存在,若否,则返回不存在; 文件打开模块,用于接收打开指令,检查文件是否存在,若文件存在,根据打开模式,创建一个文件句柄以保存文件目录块,所述文件目录块是从flash中分配的空闲块,所述空闲块保存了文件名、以及保存文件信息与文件数据的所述第一文件块的编号、所述第二文件块的编号; 文件定位模块,用于接收定位指令,查询文件对应的第一定位块,并将所述第一定位块和所述第一定位块的编号保存于所述文件句柄中; 文件读取模块,用于接收读取指令,将所述文件句柄中保存的编号对应的所述第一文件块或所述第二文件块中文件信息和文件数据拷贝至缓冲器中; 文件写入模块,用于接收写入指令,将所述缓冲器中的文件信息和文件数据拷贝至所述第一文件块或所述第二文件块中,已有所述第二文件块写满后,设置所述文件句柄中新的所述第二文件块; 偏移计算模块,用于从文件对应的所述第一文件块开始,当前所述第二文件块之前的所有所述第二文件块的有效数据长度以及当前所述第二文件块的偏移大小相加,获取当前位置相对于文件首的偏移字节数; 长度计算模块,用于根据所述文件句柄中所有所述第一文件块、所述第二文件块的有效数据长度,获取文件长度。
【文档编号】G06F17/30GK104050251SQ201410258463
【公开日】2014年9月17日 申请日期:2014年6月11日 优先权日:2014年6月11日
【发明者】徐佳宏, 阳柳郴, 朱吕亮, 张建国 申请人:深圳市茁壮网络股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1