一种文件存储方法和装置与流程

文档序号:12063670阅读:205来源:国知局
一种文件存储方法和装置与流程

本发明实施例涉及通信领域,尤其涉及一种文件存储方法和装置。



背景技术:

随着信息技术的发展,各种信息迅猛增长,作为这些信息载体的单个文件随之海量出现,尤其是容量不太大的文件。这些容量不太大的小文件小的可仅有几KB,大的通常也不超过20MB。常见的小文件,如:微博信息、用户上传的相片、电子邮件等。

海量小文件的出现带来的发展瓶颈是小文件的存储问题。现有技术中,在存储海量小文件时,通常是把文件分目录保存在本地,将文件的目录索引存放在数据库中。具体过程为,服务器接收到客户端发送的小文件的存储请求后,为该小文件生成保存路径,并根据该保存路径将该小文件保存至本地磁盘上。

在上述过程中,服务器为文件生成保存路径之后,服务器需要判断为该文件生成的保存路径是否与其它已经生成的保存路径重复。可见,现有技术中为文件生成保存路径的效率较低,从而导致现有技术中存储文件的效率较低。



技术实现要素:

本发明实施例提供一种文件存储方法和装置,用以提高文件的相对路径的生成效率,从而达到提高快速存储文件的目的。

本发明实施例提供一种文件存储方法,包括:

接收存储请求,该存储请求中携带待存储的文件;

获取用于标识存储路径的数字;

根据获取到的数字,确定该数字所标识的相对路径;其中,一个数字对应一个M进制序列,该M进制序列被划分为第一至第N段,第N段的M进制取值表示文件名,第一至第N-1段分别对应N-1级目录,第一至第N-1段中每段的M进制取值表示目录名;

将该文件命名为该数字对应的M进制序列中第N段的M进制取值,根据该数字所标识的相对路径存储该文件;

将该数字按照预先设定的规则进行更新,该预先设定的规则具体是指该数字递增或递减。

优选地,一个数字对应一个与该数字所表示的数值大小相同的M进制序列,每个M进制序列的序列长度相同。

优选地,每个M进制序列中的第一至第N段中的每段的序列长度均相同。

优选地,该接收存储请求之前,还包括:

获取用于标识存储路径的数字,生成该数字以及该数字之后连续的(L-1)个数字分别对应标识的L个相对路径;

该根据获取到的数字,确定该数字所标识的相对路径,具体包括:

根据获取到的数字,从生成的L个相对路径中确定该数字所标识的相对路径。

优选地,该根据获取到的数字,确定该数字所标识的相对路径,具体包括:

根据获取到的数字,在起始目录下确定出该数字所标识的相对路径;

该将该数字按照预先设定的规则进行更新之后,还包括:

若该获取到的数字达到阈值,则将获取到的数字设置为初始值,并更换该起始目录。

本发明实施例提供一种文件存储装置,包括:

接收单元,用于接收存储请求,该存储请求中携带待存储的文件;

获取单元,用于获取用于标识存储路径的数字;

处理单元,用于根据获取到的数字,确定该数字所标识的相对路径;其中,一个数字对应一个M进制序列,该M进制序列被划分为第一至第N段,第N段的M进制取值表示文件名,第一至第N-1段分别对应N-1级目录,第一至第N-1段中每段的M进制取值表示目录名;将该文件命名为该数字对应的M进制序列中第N段的M进制取值,根据该数字所标识的相对路径存储该文件;将该数字按照预先设定的规则进行更新,该预先设定的规则具体是指该数字递增或递减。

优选地,一个数字对应一个与该数字所表示的数值大小相同的M进制序列,每个M进制序列的序列长度相同。

优选地,每个M进制序列中的第一至第N段中的每段的序列长度均相同。

优选地,该获取单元,还用于:

获取用于标识存储路径的数字,生成该数字以及该数字之后连续的(L-1)个数字分别对应标识的L个相对路径;

该处理单元,具体用于:

根据获取到的数字,从生成的L个相对路径中确定该数字所标识的相对路径。

优选地,该处理单元,具体用于:

根据获取到的数字,在起始目录下确定出该数字所标识的相对路径;

该处理单元,还用于:

若该获取到的数字达到阈值,则将获取到的数字设置为初始值,并更换该起始目录。

本发明实施例中,接收存储请求,存储请求中携带待存储的文件;获取用于标识存储路径的数字;根据获取到的数字,确定该数字所标识的相对路径;其中,一个数字对应一个M进制序列,该M进制序列被划分为第一至第N段,第N段的M进制取值表示文件名,第一至第N-1段分别对应N-1级目录,第一至第N-1段中每段的M进制取值表示目录名;将文件命名为该数字对应的 M进制序列中第N段的M进制取值,根据该数字所标识的相对路径存储文件;将该数字按照预先设定的规则进行更新,所述预先设定的规则具体是指该数字递增或递减。由于根据获取到的数字,确定该数字所标识的相对路径,进而根据该数字所标识的相对路径存储该文件,之后将该数字按照预先设定的规则进行更新,即,由于每存储一个文件,则数字递增一次,因此,针对每个待存储的文件,所获取的用于标识存储路径的数字是不同的,进一步由于一个数字对应一个M进制序列,且该M进制序列被划分为第一至第N段,第N段的M进制取值表示文件名,第一至第N-1段分别对应N-1级目录,第一至第N-1段中每段的M进制取值表示目录名,将待存储的文件命名为该数字对应的M进制序列中第N段的M进制取值,因此,针对每个待存储的文件,所获取的用于标识存储路径的数字是不同的,所确定的该数字所标识的相对路径也是不同的,如此,则避免了为该文件生成相对路径的过程中需要判断该相对路径是否重复的过程,从而提高了为文件生成相对路径的效率,提高了存储文件的效率。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例适用的系统架构示意图;

图2为本发明实施例提供的一种文件存储方法示意图;

图3为本发明实施例提供的一种文件存储设备的结构示意图。

具体实施方式

为了使本发明的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施 例仅仅用以解释本发明,并不用于限定本发明。

如图1所示,本发明实施例适用的系统架构示意图。该系统架构中包括服务器101,以及至少一个客户端102。服务器101可为云端服务器,可以用于为多个客户端102生成文件存储的相对路径。多个客户端102的文件可存储在客户端本地,也可存储至其它服务器中,如存储服务器、云端服务器等。

本发明实施例适用于多种文件,尤其适用于通常为几KB,大的通常也不超过20MB的小文件。本发明实施例用于提供一种文件存储方法及装置,对文件大小不做限制。

本发明实施例用于根据根据获取到的数字,确定该数字所标识的相对路径,具体是指,首先确定一个起始目录,起始目录可为C盘或D盘等根目录,也可为根目录加上一些文件夹目录,比如起始目录可为D:/AA,表示在D盘的AA文件夹下生成本发明实施例中的相对路径。为描述方便,本发明实施例中将起始目录设置为D盘为例进行介绍。

基于图1所示的系统架构,图2示出了本发明实施例提供的服务器实现的一种文件存储方法,包括以下步骤:

步骤201,接收存储请求,该存储请求中携带待存储的文件;

步骤202,获取用于标识存储路径的数字;

步骤203,根据获取到的数字,确定该数字所标识的相对路径;其中,一个数字对应一个M进制序列,该M进制序列被划分为第一至第N段,第N段的M进制取值表示文件名,第一至第N-1段分别对应N-1级目录,第一至第N-1段中每段的M进制取值表示目录名;

步骤204,将该文件命名为该数字对应的M进制序列中第N段的M进制取值,根据该数字所标识的相对路径存储该文件;

步骤205,将该数字按照预先设定的规则进行更新,所述预先设定的规则具体是指该数字递增或递减。

具体实施中,在上述步骤202中,用于标识存储路径的数字可为无符号整型数或有符号整型数。由于无符号整型数可以存放的正数范围比有符号整型数可以存放的正数的范围大一倍,因此,为了增加标识存储路径的数字所表示的正数的范围,本发明实施例中优选地以无符号整型数作为标识存储路径的数字为例进行介绍。在上述步骤205中,用于标识存储路径的数字按照预先设定的规则进行更新,从而确保各相对路径不重叠,也无需路径生成后进行判断。预先设定的规则可以是将该数字递增,也可以是将该数字递减,将该数字递增可以是每次将该数字加一,或者每次将该数字加K,K为大于一的整数。将该数字递减则在初始设置时,需将该数字设置为一个较大的数值,之后将该数字每次减一,或者每次将该数字每次减K。为了下述内容方便介绍,本发明实施例中下述内容以该数字按照预先设定的规则进行更新是指将该数字每次加一为例进行介绍。

上述步骤203中,该M进制序列中的第一至第N-1段分别对应N-1级目录,第一至第N-1段中每段的M进制取值表示目录名。具体来说,本发明实施例中确定起始目录之后,在该起始目录下确定相对路径,该M进制序列中的第一至第N-1段分别对应该相对路径中的N-1级目录,也就是说该相对路径中共包括N-1级目录,该M进制序列中的第一至第N-1段分别按顺序对应该相对路径中第一级至第N-1级目录。

上述步骤203中确定该数字所标识的相对路径中包括该文件的用于存储的文件名,此时,则将该文件的真实文件名更改为该数字对应的M进制序列中第N段的M进制取值,并根据该相对路径存储该文件,可将该文件的真实文件名作为该文件的属性信息进行存储。通过修改待存储文件的文件名,确保了生成的相对路径与存储文件的一致,进一步降低了相对路径生成的复杂度。

上述步骤203中,优选地,一个数字对应一个与该数字所表示的数值大小相同的M进制序列。具体来说,获取用于标识存储路径的数字,将该数字转换为M进制的数字序列,则该数字的数值大小与该数字转换得到的M进制的 数字序列表示的数值大小相同。举例来说,该数字为十进制的一个数字,将该数字对应转换为十六进制的序列。此处M进制也可为二进制、十进制、八进制等数制形式。

优选地,每个M进制序列的序列长度相同。具体来说,每个M进制序列的序列长度均为K个数字的长度,当将某个数字转换为十六进制序列时,若该数字转换得到的十六进制序列的长度不够K个数字的长度,可通过在该数字转换得到的十六进制序列前方加零,以使该数字对应的M进制序列长度为K个数字的长度。比如,将2对应转换为十六进制的的序列,且序列长度要求为八个数字的长度,将2转换为十六进制的序列则为00000002。

由于该划分为第一至第N段的M进制序列是用于表示相对路径的,因此在该M进制序列的各段之间添加盘符,以便将该M进制序列转换为相对路径的格式。优选地,每个M进制序列中的第一至第N段中的每段的序列长度均相同。举例来说,将2对应转换为十六进制的的序列,且序列长度要求为八个数字的长度,将2转换为十六进制的序列则为00000002,将该十六进制序列划分为四段,每段的序列长度为两个数字的长度,则该M进制序列对应表示的相对路径为00/00/00/02。该划分为四段的十六进制序列中,第一段至第三段为00/00/00/分别用于表示该相对路径中的第一级至第三级的目录的目录名,也就是说第一段至第三段为00/00/00/分别用于表示该相对路径中的第一级至第三级的文件夹名,第四段02用于标识文件名,则相对路径为00/00/00/02具体是指,将该文件命名为02,之后将该文件02储存于起始目录下的第一级目录00文件夹下的第二级目录00文件夹下的第三级目录00文件夹下。

本发明实施例中,一种优选地实现方式为将获取到的用于标识存储路径的数字设置为十进制,该数字为无符号整型数,M设置为十六进制,每个M进制序列中的第一至第N段中的每段的序列长度均为两个数字长度。

上述步骤203中根据获取到的数字,确定该数字所标识的相对路径,具体可包括两种优选地的实施方式:

方式一,根据获取到的数字,生成该数字所标识的相对路径,之后将该生成的相对路径分配给该文件;

方式二,在接收存储请求之前,或者,在系统启动时,获取用于标识存储路径的数字,生成该数字以及该数字之后连续的(L-1)个数字分别对应标识的L个相对路径。之后根据获取到的数字,从生成的L个相对路径中确定该数字所标识的相对路径。

上述方式二中,具体来说,当服务器的系统启动时,即可首先获取用于标识存储路径的数字,之后根据该数字生成L个相对路径,比如L为4096。本发明实施例中对L的值不做具体限定,L可自行设置。当接收到待存储的文件时,即从预先生成的L个相对路径中为该文件确定出用于标识存储路径的数字所标识的相对路径,并将该相对路径分配给该文件,之后将该用于标识存储路径的数字递增。接收到下一个待存储文件时,则继续从预先生成的L个相对路径中为该文件确定出相对路径,并将该相对路径分配给该文件,之后该用于标识存储路径的数字递增。直到预先生成的L个相对路径用完,或者预先生成的L个相对路径中未被分配的数量小于一个值,则此时可在系统空闲时,或者在接收到存储请求时,再次生成P个相对路径,P可等于L,也可不等于L,以便于后期从该预先生成的P个相对路径中获取数字所标识的相对路径。

上述方式二中,由于预先生成多个相对路径,因此,在接收到待存储文件时,即可加快为该文件确定出相对路径的速率,从而提高了存储文件的效率。

进一步,为了提高对预先生成的相对路径的读取速度,可将预先生成的相对路径放置在缓存区中,当服务器关机之后,则自动删除此次预先生成的相对路径,待服务器下次启动系统时,需要再次根据所获取到的获取用于标识存储路径的数字重新生成多个相对路径。本发明实施例中当根据获取到的用于标识存储路径的数字,预先生成多个相对路径之后,并不将该数字按照预先设定的规则进行更新,本发明实施例中仅仅在根据获取到的数字,确定该数字所标识的相对路径,并根据该数字所标识的相对路径存储该文件之后才将该数字按照 预先设定的规则进行更新。

具体实施中,上述步骤201之前还需要预先设定起始目录,用于存储本发明实施例中的文件,且也需要在该起始目录下生成相对路径,例如,可确定起始目录为D盘,也可将该起始目录确定为D盘中的文件夹AA。本发明实施例中将相对路径之前的且用于标识存储路径的数字无法标识的目录定义为起始目录,若该获取到的数字达到阈值,则将获取到的数字设置为初始值,并更换该起始目录。具体来说,当所设置的初始值为零时,即当获取到的数字达到阈值时,则将获取到的数字清零,并更换该起始目录。

下面用一个具体的例子来对上述过程进行详细阐述。

将用于标识存储路径的数字的取值范围设置为0至4294967296,将该数字对应转换为十六进制序列,十六进制序列的范围为0至FFFFFFFF,设定每个M进制序列的序列长度为八个数字长度,每个M进制序列中的第一至第N段中的每段的序列长度均为两个数字长度。则用于标识存储路径的数字为0时,该数字对应的十六进制为0,该数字对应的长度为八个数字长度的十六进制序列为00000000,该数字所标识的相对路径为00\00\00\00;用于标识存储路径的数字为4294967296时,该数字对应的十六进制为FFFFFFFF,该数字所标识的相对路径为FF\FF\FF\FF。

该相对路径的起始目录下共可存储4294967296个文件。若用于标识存储路径的数字为57778888,则该数字对应的十六进制为371A2C8,该数字对应的长度为八个数字长度的十六进制序列为0371A2C8,将十六进制序列中每隔两位增加一个盘符得到该数字所标识的相对路径03/71/A2/C8。之后,将接收到的待存储的文件命名为C8,并将该文件存储在起始目录下的文件夹03下的文件夹71下的文件夹A2下。之后,将该用于标识存储路径的数字递增。

将该数字递增具体为将该数字加一之后,则该用于标识存储路径的数字更新为57778889,再次接收到一个待存储的文件,则通过本发明实施例所提供的方法,确定出此时用于标识存储路径的数字57778889所标识的相对路径为 03/71/A2/C9,则将此次接收到的待存储的文件命名为C9,并将该文件存储在起始目录下的文件夹03下的文件夹71下的文件夹A2下。

该例子中有一种特殊情况需要说明,比如当用于标识存储路径的数字为57778943,则该数字对应的相对路径为03/71/A2/FF,即将此次接收到的待存储的文件命名为FF,并将该文件存储在文件夹03下的文件夹71下的文件夹A2下。当第一数字为57778944,则第一数字对应的相对路径为03/71/A3/00,即将该相对路径03/71/A3/00对应的文件命名为00,并将该文件存储在文件夹03下的文件夹71下的文件夹A3下。可看出,当文件数量达到255之后,系统则自动生成一个新的第三级目录A3,在A3下重新开始存储文件。

从上述例子可明显看出,通过本发明实施例中所提供的方法,根据获取到的数字,确定该数字所标识的相对路径,当每个目录中存放的文件数量达到设定值,比如255(十六进制的FF)时,则自动生成一个新目录,该过程中无需判断每个目录中存储的文件是否达到设定值,可见,本发明实施例所提供的方法提高了生成相对路径的效率,从而提高了存储文件的效率。

进一步,将该获取到的数字的阈值设置为4294967297,若获取到的用于标识存储路径的数字为4294967296,则,此时该数字所标识的相对路径为FF/FF/FF/FF,根据该数字所标识的相对路径存储该文件之后,将该数字递增,即加一,之后所获取到的用于标识存储路径的数字为4294967297,此时,该数字达到阈值,已经无法根据该数字确定出该数字所标识的相对路径,则此时将获取到的数字设置为初始值,并更换该起始目录,在更换后的起始目录下重新根据本发明实施例所提供的方法存储文件。

从上述内容可以看出:本发明实施例中,接收存储请求,存储请求中携带待存储的文件;获取用于标识存储路径的数字;根据获取到的数字,确定该数字所标识的相对路径;其中,一个数字对应一个M进制序列,该M进制序列被划分为第一至第N段,第N段的M进制取值表示文件名,第一至第N-1段分别对应N-1级目录,第一至第N-1段中每段的M进制取值表示目录名;将 文件命名为该数字对应的M进制序列中第N段的M进制取值,根据该数字所标识的相对路径存储文件;将该数字按照预先设定的规则进行更新,所述预先设定的规则具体是指该数字递增或递减。。由于根据获取到的数字,确定该数字所标识的相对路径,进而根据该数字所标识的相对路径存储该文件,之后将该数字按照预先设定的规则进行更新,即,由于每存储一个文件,则数字递增一次,因此,针对每个待存储的文件,所获取的用于标识存储路径的数字是不同的,进一步由于一个数字对应一个M进制序列,且该M进制序列被划分为第一至第N段,第N段的M进制取值表示文件名,第一至第N-1段分别对应N-1级目录,第一至第N-1段中每段的M进制取值表示目录名,将待存储的文件命名为该数字对应的M进制序列中第N段的M进制取值,因此,针对每个待存储的文件,所获取的用于标识存储路径的数字是不同的,所确定的该数字所标识的相对路径也是不同的,如此,则避免了为该文件生成相对路径的过程中需要判断该相对路径是否重复的过程,从而提高了为文件生成相对路径的效率,提高了存储文件的效率。

基于相同构思,本发明实施例还提供一种文件存储装置,用于执行上述方法流程,该装置可为网络侧的服务器。

图3,为本发明实施例提供的文件存储装置的结构示意图。

如图3所示,该文件存储装置包括接收单元301、获取单元302、处理单元303:

接收单元301,用于接收存储请求,该存储请求中携带待存储的文件;

获取单元302,用于获取用于标识存储路径的数字;

处理单元303,用于根据获取到的数字,确定该数字所标识的相对路径;其中,一个数字对应一个M进制序列,该M进制序列被划分为第一至第N段,第N段的M进制取值表示文件名,第一至第N-1段分别对应N-1级目录,第一至第N-1段中每段的M进制取值表示目录名;将该文件命名为该数字对应 的M进制序列中第N段的M进制取值,根据该数字所标识的相对路径存储该文件;将该数字按照预先设定的规则进行更新,所述预先设定的规则具体是指该数字递增或递减。

优选地,一个数字对应一个与该数字所表示的数值大小相同的M进制序列,每个M进制序列的序列长度相同。

优选地,每个M进制序列中的第一至第N段中的每段的序列长度均相同。

优选地,该获取单元302,还用于:

获取用于标识存储路径的数字,生成该数字以及该数字之后连续的(L-1)个数字分别对应标识的L个相对路径;

该处理单元303,具体用于:

根据获取到的数字,从生成的L个相对路径中确定该数字所标识的相对路径。

优选地,该处理单元303,具体用于:

根据获取到的数字,在起始目录下确定出该数字所标识的相对路径;

该处理单元,还用于:

若该获取到的数字达到阈值,则将获取到的数字设置为初始值,并更换该起始目录。

从上述内容可以看出:本发明实施例中,接收存储请求,存储请求中携带待存储的文件;获取用于标识存储路径的数字;根据获取到的数字,确定该数字所标识的相对路径;其中,一个数字对应一个M进制序列,该M进制序列被划分为第一至第N段,第N段的M进制取值表示文件名,第一至第N-1段分别对应N-1级目录,第一至第N-1段中每段的M进制取值表示目录名;将文件命名为该数字对应的M进制序列中第N段的M进制取值,根据该数字所标识的相对路径存储文件;将该数字按照预先设定的规则进行更新,所述预先设定的规则具体是指该数字递增或递减。由于根据获取到的数字,确定该数字所标识的相对路径,进而根据该数字所标识的相对路径存储该文件,之后将该 数字按照预先设定的规则进行更新,即,由于每存储一个文件,则数字递增一次,因此,针对每个待存储的文件,所获取的用于标识存储路径的数字是不同的,进一步由于一个数字对应一个M进制序列,且该M进制序列被划分为第一至第N段,第N段的M进制取值表示文件名,第一至第N-1段分别对应N-1级目录,第一至第N-1段中每段的M进制取值表示目录名,将待存储的文件命名为该数字对应的M进制序列中第N段的M进制取值,因此,针对每个待存储的文件,所获取的用于标识存储路径的数字是不同的,所确定的该数字所标识的相对路径也是不同的,如此,则避免了为该文件生成相对路径的过程中需要判断该相对路径是否重复的过程,从而提高了为文件生成相对路径的效率,提高了存储文件的效率。

本领域内的技术人员应明白,本发明的实施例可提供为方法、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个 流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1