发明内容
本发明的主要目的是提供一种多次构建对象树结构的方法及计算机,能够快速多次构建对象树结构。
本发明解决其技术问题所采用的技术方案是:
一种多次构建对象树结构的方法,其包括:
S110、从倒数第二层开始获取需要构建文件目录的文件的当前分层的编码号;
S120、在保存的所有编码中查找是否存在所述编码号,如果不存在所述编码号,则执行步骤S130;
S130、在当前分层新建目录结点,完成该当前分层的新建目录结构建造,并保存该当前分层的编码号,根据需要构建文件目录的文件的上一分层的内容获取该上一分层的编码号,然后再执行步骤S120。
优选地,根据所述步骤S120的执行结果,如果存在所述编码号,则执行步骤S140;
S140、根据所述编码号建立所述文件的目录结构;
S150、判断所述当前分层的下一分层有没有未指定父文件目录的目录结点,如果有,则指定该下一分层的父文件目录的目录结点,如果没有,则完成该文件的目录结构的建造。
优选地,在所述步骤S130中,所述根据需要构建文件目录的文件的上一分层的内容获取该上一分层的编码号的步骤具体为:判断所述上一分层内容是否为空,如果是则完成该文件的目录结构的建造,如果否则获取并根据所述上一分层的内容生成该上一分层的编码号,然后再执行步骤S120。
优选地,所述步骤S130的保存该当前分层的编码号的步骤之后还包括:查找该当前分层的下一分层,判断所述下一分层有没有未指定父文件目录的目录结点,如果有,则指定该下一分层的父文件目录的目录结点,然后执行所述判断所述上一分层内容是否为空的步骤;如果没有,则完成该文件的目录结构的建造,然后执行所述判断所述上一分层内容是否为空的步骤。
优选地,所述获取需要构建文件目录的文件的当前分层的编码号,具体包括:
按Base64编码,将该当前分层的内容编码转换成Ansi编码,将该当前分层的内容的分层号放在第一位,生成该当前分层的内容的编码号;
所述获取并根据所述上一分层的内容生成该上一分层的编码号,具体包括:按Base64编码,将该上一分层的内容编码转换成Ansi编码,将该上一分层的内容的分层号放在第一位,生成该上一分层的内容的编码号。
本发明还提供一种计算机,包括:
编码号获取单元,用于从倒数第二层开始获取需要构建文件目录的文件的当前分层的编码号;
编码查找单元,用于在保存的所有编码中查找是否存在所述编码号,如果不存在所述编码号,则触发目录构建单元;
目录构建单元,用于在当前分层新建目录结点,完成该当前分层的新建目录结构建造,并保存该当前分层的编码号,根据需要构建文件目录的文件的上一分层的内容获取该上一分层的编码号,然后再启动所述编码查找单元。
优选地,所述计算机还包括:下分层处理单元,用于根据所述编码号建立所述文件的目录结构,判断所述下一分层有没有未指定父文件目录的目录结点,如果有,则指定该下一分层的父文件目录的目录结点,如果没有,则完成该文件的目录结构的建造;
优选地,所述目录构建单元,用于判断所述上一分层内容是否为空,如果是则完成该文件的目录结构的建造,如果否则获取并根据所述上一分层的内容生成该上一分层的编码号,然后触发所述编码查找单元。
优选地,所述目录构建单元,还用于查找该当前分层的下一分层,判断所述下一分层有没有未指定父文件目录的目录结点,如果有,则指定该下一分层的父文件目录的目录结点,然后执行所述判断所述上一分层内容是否为空的步骤;如果没有,则完成该文件的目录结构的建造,然后再判断所述上一分层内容是否为空。
优选地,所述编码号获取单元,具体用于按Base64编码,将该当前分层的内容编码转换成Ansi编码,将该当前分层的内容的分层号放在第一位,生成该当前分层的内容的编码号,或者,按Base64编码,将该上一分层的内容编码转换成Ansi编码,将该上一分层的内容的分层号放在第一位,生成该上一分层的内容的编码号。
实施本发明的技术方案,具有以下有益效果:本发明提供的多次构建对象树结构的方法及计算机,在存在多次建树(树即为:文件目录)的过程中,从第二次构建开始,又是一个完整的全路径,建文件目录结点的时候,只要找到已存在文件目录结点(不一定到根目录结点),就完成了此次全路径文件的目录建造过程,准备下一个全路径的文件目录的建造过程,能够快速多次构建对象树结构,提高用户浏览文件的效率,并且不改变原来文件的结构。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施提供一种多次构建对象树结构的方法,该方法的步骤通过计算机执行,如图1所示,该方法包括步骤:
S110、从倒数第二层开始获取需要构建文件目录的文件的当前分层的编码号;
具体地,根据需要构建文件目录的文件的全路径目录,确定最大级分层内容,从该全路径目录的根目录开始从上往下分层,并从倒数第二分层开始,获取当前分层的编码号;进一步地,从倒数第二分层开始,按Base64编码,将该当前分层的内容编码转换成Ansi编码,将该当前分层的内容的分层号放在第一位,生成该当前分层的内容的编码号。比如,在“C:\New1\New2\a.txt”中,C:\New1\New2\a.txt为全路径,将其根目录开始从上往下分层分为四层,即,“C:”为第0层、“New1”为第1层、“New2”为第2层、“a.txt”为第3层,那么“News2”为倒数第二层,“News2”的文件目录的编码号为:2+(“New2”的Ansi编码);该不同层生成的编码号以及不同内容生成的编码号都是唯一的,只有在同一层且相同内容生成的编码号才会相同。
需要说明的是,本发明实施例中定义的全路径目录包括文件名,即,比如全路径“C:\New1\New2\a.txt”,是包括文件名a.txt,因此可以分四层,步骤S110将从倒数第二层开始获取需要构建文件目录的文件的当前分层的编码号;若本发明实施例中定义的全路径目录不包括文件名,即,比如全路径“C:\New1\New2”,没有包括文件名,只可以分三层,那么本发明实施例的步骤S110将从倒数第一层开始获取需要构建文件目录的文件的当前分层的编码号。因此,本发明实施例不限于从倒数第二层开始,只要从紧贴文件名的一层开始作为当前分层,获取需要构建文件目录的文件的当前分层的编码号,均应包含在本发明的保护范围之内。
S120、在保存的所有编码中查找是否存在所述编码号;
具体地,该计算机预先设有用于保存编码的临时文件目录编码号存储列表,该所述临时文件目录编码号存储列表中保存的所有编码都对应有目录结点,可供计算机构建文件的目录结构。
S130、如果不存在所述编码号,则在当前分层新建目录结点,完成当前分层的新建目录结构建造,并保存当前分层的编码号,然后执行步骤S150;如果存在所述编码号,则执行步骤S140;在其他的实施例中,进一步的,所述步骤S130中的完成当前分层的新建目录结构建造,并保存当前分层的编码号,之后,进一步执行步骤S140。
S140、根据所述编码号建立所述文件的目录结构;查找该当前分层的下一分层,判断所述下一分层有没有未指定父文件目录的目录结点,如果有,则指定该下一分层的父文件目录的目录结点,如果没有,则完成该文件的目录结构的建造;
S150、根据需要构建文件目录的文件的上一分层的内容获取该上一分层的编码号;然后执行步骤S120;
在其他的实施例中,步骤S150具体地,判断所述上一分层内容是否为空,如果是则完成该文件的目录结构的建造,如果否则获取并根据所述上一分层的内容生成该上一分层的编码号,然后再执行步骤S120;
需要说明的是,执行步骤S150时,该上一分层已经成为当前处理的分层,即当前分层变为了该上一分层;所述当前分层内容是否为空,即所述当前分层是否为第0层。
还需要说明的是,获取并根据所述上一分层的内容生成该上一分层的编码号的原理与步骤S110的一样,按Base64编码,将该当前分层的内容编码转换成Ansi编码,将该当前分层的内容的分层号放在第一位,生成该当前分层的内容的编码号。
本发明提供的多次构建对象树结构的方法,在存在多次建树(树即为:文件目录)的过程中,从第二次开始,又是一个完整的全路径,建文件目录结点的时候,只要找到已存在的文件目录结点(不一定到根目录结点),即在保存的所有编码中查找到存在所述编码号,就完成了此次全路径建文件目录的过程,准备下一个全路径的建文件目录的过程,能够快速多次构建对象树结构,提高用户浏览文件的效率,并且不改变原来文件的结构。
本发明实施例还提供一种计算机,该计算机用于执行上述方法实施例提供的步骤,如图2所示,该计算机包括:
编码号获取单元210,用于从倒数第二层开始获取需要构建文件目录的文件的当前分层的编码号;
编码查找单元220,用于在保存的所有编码中查找是否存在所述编码号,如果不存在所述编码号,则触发目录构建单元;
目录构建单元230,用于在当前分层新建目录结点,完成该当前分层的新建目录结构建造,并保存该当前分层的编码号,根据需要构建文件目录的文件的上一分层的内容获取该上一分层的编码号,然后再启动所述编码查找单元。
在其他实施例中,进一步的,所述计算机还包括:下分层处理单元240,用于根据所述编码号建立所述文件的目录结构,判断所述下一分层有没有未指定父文件目录的目录结点,如果有,则指定该下一分层的父文件目录的目录结点,如果没有,则完成该文件的目录结构的建造;
在其他实施例中,具体的,所述目录构建单元230,用于判断所述上一分层内容是否为空,如果是则完成该文件的目录结构的建造,如果否则获取并根据所述上一分层的内容生成该上一分层的编码号,然后触发所述编码查找单元。
在其他实施例中,进一步的,所述目录构建单元230,还用于查找该当前分层的下一分层,判断所述下一分层有没有未指定父文件目录的目录结点,如果有,则指定该下一分层的父文件目录的目录结点,然后执行所述判断所述上一分层内容是否为空的步骤;如果没有,则完成该文件的目录结构的建造,然后再判断所述上一分层内容是否为空。
在其他实施例中,更为具体的,所述编码号获取单元210,具体用于按Base64编码,将该当前分层的内容编码转换成Ansi编码,将该当前分层的内容的分层号放在第一位,生成该当前分层的内容的编码号,或者,按Base64编码,将该上一分层的内容编码转换成Ansi编码,将该上一分层的内容的分层号放在第一位,生成该上一分层的内容的编码号。
下面提供上述方法和计算机的应用实施例。
例如:扫描到3个完整的全路径,依次传入:
G:\Dir0\1.txt
G:\Dir0\Dir1\2.txt
G:\Dir1\Dir2\3.txt
先创建临时文件目录编码号存储列表;
第一条全路径文件(G:\Dir0\1.txt)。
1)先传入第一条,将其分层,分别为:”G:”,”Dir0”,“1.txt”,分层结果分别为:0,1,2;
2)取1层(即倒数第二层)的分层内容“Dir0”,生成编码号为:10051035;
3)在临时文件目录编码号存储列表中查找该编码号,通过该编码号:10051035发现不存在此文件(G:\Dir0\1.txt)的目录结点,则建立此文件的目录结点(nodeDir0)。并在临时文件目录编码号存储列表中保存此编码号(10051035)和对应的目录结点(nodeDir0)。
4)取上一层内容,即:“G:”,生成编码号为:000202;
5)在临时文件目录编码号存储列表中查找,通过该编码号:000202发现不存在此文件(G:\Dir0\1.txt)的目录结点。则建立该文件的目录结点(nodeG)。并在临时文件目录编码号存储列表中保存此编码号(000202)和对应的目录结点(nodeG)。
6)查找下一层有没有未指定父文件目录结点的目录结点。发有一个nodeDir0,没有指定父结点,将其指定为nodeG的子结点。
7)判断当前目录结点是否为第0层,发现此层为第0层。则完成第一条建树过程。
第二条全路径文件(G:\Dir0\Dir1\2.txt)。
1)传入第二条,将其分层,分别为:”G:”,”Dir0”,“Dir1”,“2.txt”,分层级别分别为:0,1,2,3;
2)取2层(即倒数第二层)的分层内容“Dir1”,生成编码号为:20051039;
3)在临时文件目录编码号存储列表中查找,通过该编码号:20051039发现不存在此文件(G:\Dir0\Dir1\2.txt)的目录结点。则建立该文件的目录结点(nodeDir1)。并在临时文件目录编码号存储列表中保存此编码号(20051039)和对应文件目录结点(nodeDir1)。
4)取上一层内容,即:“Dir0”,生成编码号为:10051035;
5)在临时文件目录编码号存储列表中查找,通过编码号:10051035发现存在此文件(G:\Dir0\Dir1\2.txt)的目录结点。则取出该文件的目录结点(nodeDir0)。
6)查找下一层有没有未指定父文件目录结点的文件目录结点。发有一个nodeDir1,没有指定父结点,将其指定为nodeDir0的子结点。
7)已经找到已存在的文件的目录结点,则完成第二条建树过程。
第三条全路径文件(G:\Dir1\Dir2\3.txt):
1)传入第二条,将其分层,分别为:”G:”,”Dir1”,”Dir2”,“3.txt”,分层级别分别为:0,1,2,3;
2)取2层(即倒数第二层)的分层内容“Dir2”,生成编码号为:30051043;
3)在临时文件目录编码号存储列表中查找,通过编码号:30051043发现不存在此文件(G:\Dir1\Dir2\3.txt)的目录结点。则建立该文件的目录结点(nodeDir2)。并在临时文件目录编码号存储列表中保存此编码号(30051043)和对应的目录结点(nodeDir2)。
4)取上一分层的内容,即:“Dir1”,生成编码号为:20051039;
5)在计算机的临时文件目录编码号存储列表中查找,通过编码号:20051039发现不存在此文件(G:\Dir1\Dir2\3.txt)的目录结点。则建立该文件的目录结点(nodeDir1)。并在临时文件目录编码号存储列表中保存此编码号(20051039)和对应文件目录结点(nodeDir1)。
6)查找下一层有没有未指定父文件目录结点的文件目录结点。发有一个nodeDir2,没有指定父结点,将其指定为nodeDir1的子结点。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。