CN115686380A - 一种文件存储的方法、装置、计算机设备及存储介质 - Google Patents
一种文件存储的方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN115686380A CN115686380A CN202211617619.8A CN202211617619A CN115686380A CN 115686380 A CN115686380 A CN 115686380A CN 202211617619 A CN202211617619 A CN 202211617619A CN 115686380 A CN115686380 A CN 115686380A
- Authority
- CN
- China
- Prior art keywords
- file
- target
- character string
- directory
- storing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 63
- 238000004590 computer program Methods 0.000 claims description 13
- 230000011218 segmentation Effects 0.000 claims description 4
- 230000000007 visual effect Effects 0.000 description 14
- 238000012360 testing method Methods 0.000 description 8
- 238000004422 calculation algorithm Methods 0.000 description 6
- 238000012795 verification Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 150000003839 salts Chemical class 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种文件存储的方法、装置、计算机设备及存储介质,以解决磁盘检索文件效率低下的问题。该方法包括:读取目标文件的字节流,得到目标文件的目标字符串;将目标字符串依序分割成预设数量个数的分组字符串;在指定的存储文件目录下,按照分组字符串的顺序,依次生成以分组字符串命名的树形文件目录;将目标文件存储在最后一个分组字符串所对应的文件目录中。
Description
技术领域
本发明涉及文件管理领域,尤其涉及一种文件存储的方法、装置、计算机设备及存储介质。
背景技术
在现有技术中,应用程序在处理文件时,通常将文件保存在磁盘中,并以文件的原始文件名保存在同一个文件目录下。但随着时间的推移,磁盘需要存储的文件越来越多,同一文件目录下的文件也会随之增加。
当磁盘需要访问某一目标文件时,会根据文件路径,由磁盘根目录开始逐级查找对应的文件目录。再查找到目标文件目录后,根据目标文件在磁盘中的编号,查询当前文件目录下与该编号对应的目标文件。一旦同一文件目录下存储了过多的文件,将导致磁盘在该文件目录下花费过多的时间查找与该编号对应的目标文件。因此同一文件目录下存储的文件越多,就越容易导致磁盘检索文件的效率低下,严重影响了应用程序整体的性能。
发明内容
本发明实施例提供一种文件存储的方法、装置、计算机设备及存储介质,以解决磁盘检索文件效率低下的问题。
第一方面,提供一种文件存储的方法,包括:
读取目标文件的字节流,得到所述目标文件的目标字符串;
将所述目标字符串依序分割成预设数量个数的分组字符串;
在指定的存储文件目录下,按照所述分组字符串的顺序,依次生成以所述分组字符串命名的树形文件目录;
将所述目标文件存储在最后一个所述分组字符串所对应的文件目录中。
在第一方面的一种可能的实现方式中,所述将所述目标文件存储在最后一个所述分组字符串所对应的文件目录中之前,该文件存储的方法还包括:
在最后一个所述分组字符串所对应的文件目录中,依据所述目标字符串,查找是否存在与所述目标文件相同的文件;
若存在,则不存储所述目标文件。
在第一方面的一种可能的实现方式中,所述将所述目标文件存储在最后一个所述分组字符串所对应的文件目录中,包括:
将所述目标文件的文件名重命名为所述目标字符串,得到以所述目标字符串命名的待存储文件;
将所述待存储文件存储在最后一个所述分组字符串所对应的文件目录中。
在第一方面的一种可能的实现方式中,所述将所述目标文件存储在最后一个所述分组字符串所对应的文件目录中之后,该文件存储的方法还包括:
搜索指定文件名,查询出所有以指定文件名命名的指定文件;
依据所述指定文件对应的目标字符串,得到所述指定文件的文件列表和/或文件缩略图。
在第一方面的一种可能的实现方式中,所述读取目标文件的字节流,得到所述目标文件的目标字符串,包括:
读取密钥配置文件,得到所述目标文件对应的文件密钥;
使用所述文件密钥加密所述目标文件的字节流,将加密后的所述字节流作为所述目标字符串。
在第一方面的一种可能的实现方式中,所述使用所述文件密钥加密所述目标文件的字节流,包括:
将所述文件密钥拼接在所述目标文件的字节流的任意位置上,得到拼接字符串;
加密所述拼接字符串。
在第一方面的一种可能的实现方式中,所述加密所述拼接字符串,包括:
将所述拼接字符串加密成十六进制字符串,得到32字节长度的加密字符串;
将所述加密字符串作为所述拼接字符串的加密结果。
第二方面,提供一种文件存储的装置,包括:
读取文件模块,用于读取目标文件的字节流,得到所述目标文件的目标字符串;
分割字符模块,用于将所述目标字符串依序分割成预设数量个数的分组字符串;
生成目录模块,用于在指定的存储文件目录下,按照所述分组字符串的顺序,依次生成以所述分组字符串命名的树形文件目录;
存储文件模块,用于将所述目标文件存储在最后一个所述分组字符串所对应的文件目录中。
第三方面,提供一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述文件存储的方法的步骤。
第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述文件存储的方法的步骤。
上述文件存储的方法、装置、计算机设备及存储介质,通过读取目标文件的字节流,得到目标文件的目标字符串。将目标字符串依序分割成预设数量个数的分组字符串。在指定的存储文件目录下,按照所述分组字符串的顺序,依次生成以所述分组字符串命名的树形文件目录。最后将所述目标文件存储在最后一个所述分组字符串所对应的文件目录中,也就是,根据目标文件的字节流,生成目标字符串,继而依据该目标字符串对目标文件的文件存储路径进行规划。由于目标字符串是对依照目标文件的字节流生成的,因此目标字符串没有重复的可能性,所以目标字符串所对应的文件存储路径也不存在重复的可能性,这使得目标文件能够保存在不同路径的目标文件目录下,也就是,保证了最终的存储文件的目标文件目录下只存在目标文件这一个文件。在后续磁盘在目标文件目录中检索目标文件时,无需查找大量文件,进入目标文件目录时就能得到所需的目标文件,减少了磁盘检索目标文件的时间,提高了磁盘检索的效率。另外,磁盘对目标文件的检索时,是从磁盘根目录依据文件路径,逐级对文件目录进行搜索的。因此,相较于磁盘在搜索树形文件目录时的速度,磁盘在文件目录中查找对应编号的目标文件的检索速度更为低下。因此在该文件存储的方法中,将对目标文件的检索转化成对树形文件目录的检索,也就是,对目标文件字节流对应的目标字符串进行分割,对应生成了树形文件目录,形成了磁盘检索所需的目标文件路径。使得磁盘更快速、高效地检索到目标文件目录,有效地提升了磁盘检索目标文件的速度与效率。综上,该文件存储的方法从优化目标文件路径与减少目标文件目录下的文件数量两个方面一起加快了磁盘检索的速度,同时也提高了磁盘读取目标文件的效率和应用程序的整体性能。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例中文件存储的方法的一应用环境示意图;
图2是本发明一实施例中文件存储的方法的一示意流程图;
图3是本发明一实施例中文件存储的装置的一示意图;
图4是本发明一实施例中计算机设备的一示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供的文件存储的方法,可应用在如图1的应用环境中,其中,终端设备通过网络与服务器进行通信,以便获取目标文件后向服务端传输,由服务端读取目标文件的字节流,得到目标文件的目标字符串。依据预设数量,将目标字符串依序分割成预设数量个数的分组字符串。在指定的存储文件目录下,按照所述分组字符串的顺序,依次生成以对应的所述分组字符串命名的树形文件目录。最后将所述目标文件存储在最后一个所述分组字符串所对应的文件目录中。其中,终端设备可以但不限于各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备。服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一实施例中,如图2所示,提供一种文件存储的方法,以该方法应用在图1中的服务器为例进行说明,包括如下步骤:
S10:读取目标文件的字节流,得到所述目标文件的目标字符串。
服务器获取到目标文件后,读取目标文件的字节流,得到目标字符串。其中,字节流包括但不仅限于文件二进制流、文件二进制表示方法等,例如,使用IO(输入/输出,全称为Input/Output)字节流读取目标文件得到文件二进制流、基于64个可打印字符来表示二进制数据的图片文件等。
另外,目标字符串指目标文件的字节流经过处理或直接保存后得到的字符串,包括但不仅限于目标文件的字节流、加密目标文件字节流得到的加密字符串、依照预期数据结构对目标文件的字节流进行处理后得到的字符串等。
S20:将所述目标字符串依序分割成预设数量个数的分组字符串。
得到目标文件的目标字符串后,依据预设数量,将目标字符串分割成预设数量的分组字符串。其中,预期数量包括所有大于等于1的正整数,而分割目标字符串的方式包括但不仅限于使用不同的程序语言对字符串进行分割、利用字符串分割工具对目标字符串进行分割等。另外,将目标字符串分割成预设数量的字符串这一动作包括但不仅限于将字符串有规律地分割成预设数量、将字符串随机分割为预设数量等。
例如,目标字符串为“e5be97e588b0e79a84”,预设数量为3,则将目标字符串随机分割为三个分组字符串:“e5”、“be97e58”和“8b0e79a84”。
在一实施例中,步骤S20之后,即得到分组字符串之后,该文件存储方法还包括对每个分组字符串进行文件目录名的合法性验证。
其中,文件目录的合法性验证包括但不仅限于判断对加密后的字节流是否含有非法字符、判断加密后的字节流是否含有不能被用于文件目录命名的字符、符号以及判断字符串首字母是否符合文件目录名称对首字母要求等。
需要说明的是,由于分组字符串将在后续的步骤中,作为文件目录的文件名使用,而不同的磁盘与操作系统对文件目录的命名有着不同的要求,因此,在其中一实施例中对所有的文件目录名称进行了合法性验证,以防止后续的命名中出现异常错误,同时也防止了分组字符串中存在脚本入侵的可能性,提高了本实施例的容错性和安全性。
S30:在指定的存储文件目录下,按照所述分组字符串的顺序,依次生成以所述分组字符串命名的树形文件目录。
将目标字符串依次分割为多个分组字符串后,在服务器指定的存储文件目录下,按照分组字符串的顺序依次生成以对应的所述分组字符串命名的树形文件目录。其中,指定的存储文件目录包括但不仅限于服务器默认的存储文件目录、终端设备传递给服务器的指定存储文件目录等。
例如,在步骤S20的示例中,将目标字符串随机分割为三个分组字符串:“e5”、“be97e58”和“8b0e79a84”,则在服务器指定的存储文件目录下,依次生成以这三个分组字符串命名的三层树形文件目录,具体地,在该存储文件目录下生成一个命名为“e5”的文件目录,接着在“e5”这一文件目录下,生成一个命名为“be97e58”的文件目录,最后在“be97e58”这一文件目录下,生成一个命名为“8b0e79a84”的文件目录。
在一实施例中,步骤S30中依次生成以所述分组字符串命名的树形文件目录之前,该文件存储方法还包括如下步骤:
S31:判断当前的父级树形文件目录下是否包含与分组字符串同名的文件目录。
S32:若存在同名的文件目录,则不生成对应的文件目录。
S33:打开同名的文件目录,在该同名的文件目录下,生成以与当前文件目录层级对应的分组字符串命名的文件目录。
具体地,在指定的存储文件目录或树形文件目录中某一父级文件目录下,需要生成以分组字符串命名的文件目录,则需要先判断存储文件目录或该父级文件目录下是否存在与当前分组字符串对应的文件目录。若存在,则直接使用该文件目录,新建下一级文件目录,而不用在当前生成另一个同名文件目录。
例如,在步骤S30的示例中,在生成以分组字符穿“e5”命名的文件目录时,需要先判断当前存储文件目录下是否已经存在包含了与分组字符串“e5”同名的文件目录,若不存在,则在生成对应的文件目录“e5”。若存在,则打开已经存在的文件目录“e5”,在文件目录“e5”下,判断是否已经存在包含了与分组字符串“be97e58”同名的文件目录,若不存在,则生成对应的文件目录。若存在,则打开同名文件目录“be97e58”,继续生成下一级文件目录。
需要说明的是,虽然本实施例中,由于目标字符串是根据目标文件的字节流生成的,因此目标字符串是没有重复的可能性的。但,由于步骤S20中对目标字符串的切割,使得分组字符串有少量重复的可能性,因此在步骤S30中有可能在同一文件目录下有可能有少量的同名文件目录,故此在其中一实施例中,对同名文件目录进行了判断,以防止生成过多的同名文件目录副本导致影响磁盘的检索效率,同时也防止了同名文件目录互相覆盖导致文件丢失的问题。
S40:将所述目标文件存储在最后一个所述分组字符串所对应的文件目录中。
在生成树形文件目录后,将所述目标文件存储在最后一个所述分组字符串所对应的文件目录中。该最后一个所述分组字符串对应的文件目录,指分组字符串所对应生成的树形文件目录中,最后一个生成的文件目录。
例如,在步骤S30的示例生成的树形文件目录中,目标文件将被存储在命名为“8b0e79a84”的文件目录中,也就是最后一个所述分组字符串所对应的文件目录中。
需要说明的是,本实施例根据目标文件的字节流,生成目标字符串,继而依据该目标字符串对目标文件的文件存储路径进行规划。其中,由于目标字符串是对依照目标文件的字节流生成的,因此目标字符串没有重复的可能性,所以目标字符串所对应的文件存储路径也不存在重复的可能性,这使得目标文件能够保存在不同路径的目标文件目录下,也就是,保证了最终的存储文件的目标文件目录下只存在目标文件这一个文件。在后续磁盘在目标文件目录中检索目标文件时,无需查找大量文件,进入目标文件目录时就能得到所需的目标文件,减少了磁盘检索目标文件的时间,提高了磁盘检索的效率。另外,磁盘对目标文件的检索时,是从磁盘根目录依据文件路径,逐级对文件目录进行搜索的。因此,相较于磁盘在搜索树形文件目录时的速度,磁盘在文件目录中查找对应编号的目标文件的检索速度更为低下。因此在该文件存储的方法中,将对目标文件的检索转化成对树形文件目录的检索,也就是,对目标文件字节流对应的目标字符串进行分割,对应生成了树形文件目录,形成了磁盘检索所需的目标文件路径。使得磁盘更快速、高效地检索到目标文件目录,有效地提升了磁盘检索目标文件的速度与效率。综上,该文件存储的方法从优化目标文件路径与减少目标文件目录下的文件数量两个方面一起加快了磁盘检索的速度,同时也提高了磁盘读取目标文件的效率和应用程序的整体性能。
在一实施例中,步骤S10中,即读取目标文件的字节流,得到所述目标文件的目标字符串中,具体包括如下步骤:
S11:读取密钥配置文件,得到所述目标文件对应的文件密钥。
S12:使用所述文件密钥加密所述目标文件的字节流,将加密后的所述字节流作为所述目标字符串。
在其中一实施例中,服务器读取目标文件的字节流后,接着读取密钥配置文件。在密钥配置文件中查询目标文件对应的文件密钥,其中,查询目标文件对应的文件密钥的方式包括但不仅限于依据目标文件的文件类型、依据目标文件的项目归属等方式查询对应的文件密钥。
接着,使用获取到的文件密钥对目标文件的字节流进行加密,将加密后的字节流作为目标字符串。其中,文件密钥指用来完成加密、解密、完整性验证等密码学应用的秘密信息,包括但不仅限于字符串、数字等。该文件密钥可以是公钥,也可以是私钥,也可以包含公钥和私钥,此处不对文件密钥的个数和类型作出限定。另外,依据文件密钥对目标文件的字节流的进行加密的方式包括但不仅限于使用对称加密、非对称加密、salt(盐)加密等方式。
需要说明的是,在该实施例中,通过密钥配置文件读取目标文件密钥,可以有效地管理文件密钥,防止密钥丢失。另外,对目标字符串进行一定规则的加密,由于加密算法中通常会对待加密字符进行填充和整理,这可以使目标字符串以一种较为规则的方式出现,防止由于目标字符串长短各异,导致后续生成的树形文件目录层级过多,影响磁盘的检索效率。
在一实施例中,步骤S11之前,即读取密钥配置文件之前,该文件存储的方法还包括生成密钥配置文件。
该实施例中,将文件密钥统一保存在密钥配置文件中。生成文件秘钥的方式包括但不仅限于根据目标文件类型对应生成不同的文件密钥、依据目标文件的来源生成不同的文件密钥、根据用户的手动设定生成不同的文件密钥。
在其中一实施例中,提供了密钥配置的可视化界面,用户可以不同的需求,对同一来源的目标文件或同一类型的目标文件,生成同一种或同一个文件密钥。用户也可以选择不从系统生成文件密钥,而直接通过手动输入的方式,输入指定的文件密钥。另外,该可视化界面中,用户可以选择是批量或单个生成目标文件的文件密钥。最终将用户设定的文件密钥统一保存在密钥配置文件中。
具体地,示例一,密钥配置的可视化界面中存在三个待配置密钥的目标文件,目标文件包括文本文件A、图片文件B和图片文件C。用户可以在可视化界面中选择根据文件类型来配置文件密钥。因此,用户可以直接设置所有文本文件的文件密钥均设定为“txt”,而所有图片文件的文件密钥均设定为“image”。然后将用户设定的文件密钥保存在密钥配置文件中。
示例二,密钥配置的可视化界面中存在三个待配置密钥的目标文件,目标文件包括来源于项目A的两个文件和项目B的一个文件,用户可以在可视化界面中选择依据文件来源配置文件密钥。因此,用户可以直接设置来源于项目A的所有文件的文件密钥为随机生成的字符串A,来源于项目B的所有文件的文件密钥为随机生成的字符串B。然后将用户设定的文件密钥保存在密钥配置文件中。
示例三,用户除了可以依照上述两个示例设定文件密钥外,还可以手动指定某一个文件的文件密钥。例如上述示例一中,用户先按照文件类型设置了同一个文件类型的文件密钥后,可以选择图片文件C进行指定文件密钥的设置,将图片文件C的文件密钥设置为随机生成的数值C。该文件存储的方法将依据用户设定文件密钥的先后顺序,对之前的文件密钥进行修改。因此,在本操作结束后,所生成的密钥配置文件中,文本文件的文件密钥为“txt”,图片文件的文件密钥为“image”,而图片文件C的文件密钥为随机生成的数值C。
需要说明的是,在该实施例中通过可视化界面进行配置后,生成对应的密钥配置文件,使得文件密钥的类型更加丰富,有效保证了加密结果的安全性。由于在其中一实施例中,需要将目标文件的文件名重命名为目标字符串,而目标字符串则由加密结果生成,因此配置密钥的步骤防止通过目标文件的文件名对目标文件进行窃取,同时也防止了通过破译目标字符串得出目标文件的文件路径,有效保证了目标文件和磁盘的安全性。
在一实施例中,步骤S12中,即将加密后的所述字节流作为所述目标字符串中,具体还包括对加密后的字节流进行文件名的合法性验证。
其中,该步骤中文件名的合法性验证包括但不仅限于判断对加密后的字节流是否含有非法字符、判断加密后的字节流是否含有不能被用于文件命名的字符、符号以及判断字符串首字母是否符合文件名称对首字母要求等。
需要说明的是,由于其中一实施例中,需要将目标文件的文件名重命名为目标字符串,而目标字符串则来源于步骤S12中加密后的字节流。因此,对加密后的字节流进行文件名合法性验证,有利于防止后续重命名的过程中,出现异常报错,有效保证了本实施例的安全性与容错性。
在一实施例中,步骤S12中,即使用所述文件密钥加密所述目标文件的字节流中,具体包括如下步骤:
S121:将所述文件密钥拼接在所述目标文件的字节流的任意位置上,得到拼接字符串。
S122:加密所述拼接字符串。
在其中一实施例中,将获取到的文件密钥拼接在目标文件的字节流的任意位置上,得到拼接字符串,继而对拼接字符串进行加密。其中对拼接字符串进行加密的方法包括但不仅限于MD5(信息摘要算法,全称为MD5 Message-Digest Algorithm)加密、SHA1(安全散列算法1,全称为Secure Hash Algorithm 1)加密等加密方式。
具体地,可以采用salt加密的方式,在目标文件的字节流的任意位置插入文件密钥。接着,将经过salt加密的字节流,再进行一次MD5加密,将MD5加密的结果作为目标字符串。
例如,获取到的文件密钥为“secret”,目标字符串为“abcd”,将文件密钥拼接在目标字符串的任意位置上,得到拼接字符串“secretabcd”。接着在步骤S122中对拼接字符串“secretabcd”进行加密。
需要说明的是,该实施例中,将密钥拼接在目标文件字节流的任意位置,有效地提高了破译加密算法的难度,也就是,提升了目标字符串的安全性,从而在后续存储了目标文件后,有效防止了目标文件路径及目标文件本身被破译的可能性,保证目标文件的安全性。
在一实施例中,步骤S122中,即加密所述拼接字符串中,具体包括如下步骤:
S61:将所述拼接字符串加密成十六进制字符串,得到32字节长度的加密字符串。
S62:将所述加密字符串作为所述拼接字符串的加密结果。
在其中一实施例中,将所述拼接字符串加密成十六进制字符串,最终得到一个32字节长度的加密字符串。
其中,步骤S61中加密拼接字符串的方式包括但不仅限于如下步骤:
S611:将所述拼接字符串进行填充和整理。
S612:将拼接字符串依据长度进行平均分组。
S613:指定若干个加密参数。
S614:依据所述加密参数,对拼接字符串的每个分组进行多轮循环加密处理,最终输出所述加密字符串。
具体地,步骤S611中,判断所述拼接字符串的长度信息,若该长度信息不满足期望长度,则对拼接字符串进行长度信息补足。补足的方式包括但不仅限于将需要不足长度信息的位置填充预期数字等方式。接着在步骤S612中,通过步骤S611补足长度后,将拼接字符串平均分割为预期个数的组。
然后,在步骤S612中指定若干个加密参数,该加密参数包括但不仅限于标准数、字符串等。最后在步骤S614中,依据加密参数,对拼接字符串分割出的组里的字符串依次进行多轮循环加密处理,最终得到预期个数的十六进制字符串,也就是,一个32字节长度的加密字符串。
需要说明的是,在该实施例中,将固定长度的32字节的加密字符串作为目标字符串,保证了所有目标字符串的长度。在后续将目标字符串切割为分组字符串时,防止由于目标字符串长度过长,导致分组字符串过多,从而生成层级过多的树形文件目录。过多层级的树形文件目录将导致磁盘检索的速度减慢,因此将目标字符串固定位32字节长度,有效地保证了磁盘的检索效率。
在一实施例中,步骤S40之前,即将所述目标文件存储在最后一个所述分组字符串所对应的文件目录中之前,该文件存储的方法还包括如下步骤:
S71:在所述最后一个所述分组字符串所对应的文件目录中,依据所述目标字符串,查找是否存在与所述目标文件相同的文件。
S72:若存在,则不存储所述目标文件。
在其中一实施例中,在目标文件的预期存储文件目录中,即最后一个所述分组字符串对应的文件目录中,依据目标字符串,查找是否存在于目标文件相同的文件。具体地,由于目标字符串包含目标文件的字节流,可以通过读取该底层文件目录中文件的字节流,判断读取出的字节流所得出的字符串是否与目标字符串一致,若一致,则说明该文件与目标文件是相同的,若不一致,则说明该文件与目标文件是不相同的。若文件相同,则不存储目标文件,避免磁盘重复无用的覆盖写入动作。
例如,预期存储目标文件的文件目录中,存在文件名为“a”的文件,目标字符串为“947338bf02aa1a050f2c1fc24b0d34ee”,则读取文件“a”的字节流,得到文件“a”的字符串为“3caf934f288e77e58d8efb740bab9c64”。判断“947338bf02aa1a050f2c1fc24b0d34ee”与“3caf934f288e77e58d8efb740bab9c64”两个字符串不相等,因此目标文件与“a”文件不是相同文件。
需要说明的是,该实施例中,是为了防止网络异常或其他原因导致的同一份文件被多次上传的情况。若判断出是同一份文件,则磁盘不需执行文件写入动作,有效地提升了磁盘的读取效率。另外,由于步骤S10中使用目标文件的字节流生成对应的目标字符串,因为同一文件的字节流是相同的,所以对应生成的目标字符串也是相同的。因此在该实施例中,可以快速地根据目标文件的目标字符串判断出同一文件目录下其他文件与目标文件是否是同一文件,提升了该文件存储的方法的整体处理效率。
在一实施例中,步骤S40中,即将所述目标文件存储在最后一个所述分组字符串所对应的文件目录中,具体包括如下步骤:
S41:将所述目标文件的文件名重命名为所述目标字符串,得到以所述目标字符串命名的待存储文件。
S42:将所述待存储文件存储在最后一个所述分组字符串所对应的文件目录中。
在其中一实施例中,将所述目标文件的相关内容记录在磁盘中,该相关内容包括但不仅限于该目标文件对应的文件名、目标字符串、存储路径、可访问地址、文件类型等内容。接着将目标文件的文件名重命名为目标字符串,得到以目标字符串命名的待存储文件,将所述带存储文件存储在最后一个所述分组字符串所对应的文件目录中,以完成整个目标文件的存储操作。
例如,目标文件的文件名为“a”,目标字符串为“cde”,则在步骤S41中,将目标文件的文件名更改为“cde”。由于目标文件的相关内容已经被记录在磁盘中,其中包含了目标文件的文件名“a”与目标字符串“cde”。因此,在后续若需要查找根据文件名“a”查找到目标文件,可以根据磁盘记录查找到对应的目标文件。
需要说明的是,将目标文件依据目标字符串进行重命名,一方面防止目标文件的文件名中存在一些特殊编码文字,影响磁盘的检索效率,另一方面使目标文件在被使用的时候,可以无需获取目标文件的原始文件名,直接依据目标文件的字节流即可方便地使用或下载目标文件,提高了目标文件的使用效率。
在一实施例中,步骤S40之后,即将所述目标文件存储在最后一个所述分组字符串所对应的文件目录中之后,该文件存储的方法还包括如下步骤:
S81:搜索指定文件名,查询出所有以指定文件名命名的指定文件。
S83:依据所述指定文件对应的目标字符串,得到所述指定文件的文件列表和/或文件缩略图。
在其中一实施例中,在目标文件被存储最后一个所述分组字符串对应的文件目录中之后,磁盘可以搜索指定文件名,已查询出所有以指定文件名命名的指定文件。其中,获取指定文件名的方法包括但不仅限于通过可视化界面由用户输入获取、应用程序的代码中写入了指定文件名等方法。接着,可以通过指定文件对应的目标字符串得到所述指定文件的文件列表和/或文件缩略图,该得到所述指定文件的文件列表和/或文件缩略图的方式包括但不仅限于构建用于展示指定文件的可视化界面对文件列表和/或文件缩略图进行展示、直接返回指定文件的文件列表等方式,其中,可视化界面展示的内容包括但不仅限于文件列表、文件缩略图、图片文件本身等。
例如,目标文件文件名为“test”,其目标字符串为“c4af553bc4d7781b1fd613194e3d8b1c”,即时在步骤S41中,目标文件名被更改为“c4af553bc4d7781b1fd613194e3d8b1c”,但初始文件名“test”依然被记录在磁盘中,与目标文件有对应关联。因此,当应用程序需要指定文件“test”时,将以“test”作为指定文件名进行磁盘搜索,查询出所有原始文件名为“test”的指定文件。接着构建文件列表的可视化界面,该可视化界面用于展示指定文件名的查询结果。
另外,步骤S82中,在其中一实施例中,依据在可视化界面展示数据时,可以直接根据指定文件对应的目标字符串,得出指定文件的地址,将指定文件的地址展示在可视化界面中。若指定文件是图片文件,可以由指定文件的地址直接展示出图片。
例如,本步骤上述示例中的指定文件“test”,若该指定文件是图片文件。应用程序需要在A页面展示该图片,则应用程序可以通过“test”的字节流,得出其对应的目标字符串“c4af553bc4d7781b1fd613194e3d8b1c”,将目标字符串按预期数量进行分割,得出该指定文件的文件路径。应用程序将文件路径写入A页面中,就可以在A面展示test图片。
需要说明的是,该实施例中,提供了快速展示目标文件的方法,依据目标文件的文件流,迅速得出目标文件的路径,从而直接通过目标文件的路径对目标文件进行展示或下载等操作。这不仅提供了可视化界面方便查询目标文件,更使得应用程序调用目标文件时更加高效。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
在一实施例中,提供一种文件存储的装置,该文件存储的装置与上述实施例中文件存储的方法一一对应。如图3所示,该文件存储的装置包括读取文件模块、分割字符模块、生成目录模块和存储文件模块。各功能模块详细说明如下:
读取文件模块,用于读取目标文件的字节流,得到所述目标文件的目标字符串;
分割字符模块,用于将所述目标字符串依序分割成预设数量个数的分组字符串;
生成目录模块,用于在指定的存储文件目录下,按照所述分组字符串的顺序,依次生成以所述分组字符串命名的树形文件目录;
存储文件模块,用于将所述目标文件存储在最后一个所述分组字符串所对应的文件目录中。
关于文件存储的装置的具体限定可以参见上文中对于文件存储的方法的限定,在此不再赘述。上述文件存储的装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图4所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储目标文件信息,该目标文件信息包括但不仅限于目标文件的原始文件名、目标文件依据第一字符串重命名后的文件名、第一字符串、目标文件保存的文件目录路径、目标文件的访问链接和目标文件的文件类型。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种文件存储的方法。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
读取目标文件的字节流,得到所述目标文件的目标字符串;
将所述目标字符串依序分割成预设数量个数的分组字符串;
在指定的存储文件目录下,按照所述分组字符串的顺序,依次生成以所述分组字符串命名的树形文件目录;
将所述目标文件存储在最后一个所述分组字符串所对应的文件目录中。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
读取目标文件的字节流,得到所述目标文件的目标字符串;
将所述目标字符串依序分割成预设数量个数的分组字符串;
在指定的存储文件目录下,按照所述分组字符串的顺序,依次生成以所述分组字符串命名的树形文件目录;
将所述目标文件存储在最后一个所述分组字符串所对应的文件目录中。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink) DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (10)
1.一种文件存储的方法,其特征在于,包括:
读取目标文件的字节流,得到所述目标文件的目标字符串;
将所述目标字符串依序分割成预设数量个数的分组字符串;
在指定的存储文件目录下,按照所述分组字符串的顺序,依次生成以所述分组字符串命名的树形文件目录;
将所述目标文件存储在最后一个所述分组字符串所对应的文件目录中。
2.如权利要求1所述文件存储的方法,其特征在于,所述将所述目标文件存储在最后一个所述分组字符串所对应的文件目录中之前,所述方法还包括:
在最后一个所述分组字符串所对应的文件目录中,依据所述目标字符串,查找是否存在与所述目标文件相同的文件;
若存在,则不存储所述目标文件。
3.如权利要求1所述文件存储的方法,其特征在于,所述将所述目标文件存储在最后一个所述分组字符串所对应的文件目录中,包括:
将所述目标文件的文件名重命名为所述目标字符串,得到以所述目标字符串命名的待存储文件;
将所述待存储文件存储在最后一个所述分组字符串所对应的文件目录中。
4.如权利要求1所述文件存储的方法,其特征在于,所述将所述目标文件存储在最后一个所述分组字符串所对应的文件目录中之后,所述方法还包括:
搜索指定文件名,查询出所有以指定文件名命名的指定文件;
依据所述指定文件对应的目标字符串,得到所述指定文件的文件列表和/或文件缩略图。
5.如权利要求1所述文件存储的方法,其特征在于,所述读取目标文件的字节流,得到所述目标文件的目标字符串,包括:
读取密钥配置文件,得到所述目标文件对应的文件密钥;
使用所述文件密钥加密所述目标文件的字节流,将加密后的所述字节流作为所述目标字符串。
6.如权利要求5所述文件存储的方法,其特征在于,所述使用所述文件密钥加密所述目标文件的字节流,包括:
将所述文件密钥拼接在所述目标文件的字节流的任意位置上,得到拼接字符串;
加密所述拼接字符串。
7.如权利要求6所述文件存储的方法,其特征在于,所述加密所述拼接字符串,包括:
将所述拼接字符串加密成十六进制字符串,得到32字节长度的加密字符串;
将所述加密字符串作为所述拼接字符串的加密结果。
8.一种文件存储的装置,其特征在于,包括:
读取文件模块,用于读取目标文件的字节流,得到所述目标文件的目标字符串;
分割字符模块,用于将所述目标字符串依序分割成预设数量个数的分组字符串;
生成目录模块,用于在指定的存储文件目录下,按照所述分组字符串的顺序,依次生成以所述分组字符串命名的树形文件目录;
存储文件模块,用于将所述目标文件存储在最后一个所述分组字符串所对应的文件目录中。
9.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述文件存储的方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述文件存储的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211617619.8A CN115686380B (zh) | 2022-12-16 | 2022-12-16 | 一种文件存储的方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211617619.8A CN115686380B (zh) | 2022-12-16 | 2022-12-16 | 一种文件存储的方法、装置、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115686380A true CN115686380A (zh) | 2023-02-03 |
CN115686380B CN115686380B (zh) | 2024-04-19 |
Family
ID=85054946
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211617619.8A Active CN115686380B (zh) | 2022-12-16 | 2022-12-16 | 一种文件存储的方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115686380B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002041342A (ja) * | 2000-07-28 | 2002-02-08 | Matsushita Electric Ind Co Ltd | ファイル再生方法、ファイル管理方法およびシステム |
JP2004118233A (ja) * | 2002-09-20 | 2004-04-15 | Ricoh Co Ltd | 文書管理方法及び文書管理プログラム並びにそれを記録した記録媒体 |
CN102024019A (zh) * | 2010-11-04 | 2011-04-20 | 曙光信息产业(北京)有限公司 | 一种分布式文件系统中基于后缀树的目录组织方法 |
CN107634832A (zh) * | 2017-09-12 | 2018-01-26 | 云南撇捺势信息技术有限公司 | 字符串加密、验证方法、装置、计算机可读存储介质 |
CN114691039A (zh) * | 2022-03-22 | 2022-07-01 | 北京达佳互联信息技术有限公司 | 数据处理方法、装置、电子设备及存储介质 |
-
2022
- 2022-12-16 CN CN202211617619.8A patent/CN115686380B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002041342A (ja) * | 2000-07-28 | 2002-02-08 | Matsushita Electric Ind Co Ltd | ファイル再生方法、ファイル管理方法およびシステム |
JP2004118233A (ja) * | 2002-09-20 | 2004-04-15 | Ricoh Co Ltd | 文書管理方法及び文書管理プログラム並びにそれを記録した記録媒体 |
CN102024019A (zh) * | 2010-11-04 | 2011-04-20 | 曙光信息产业(北京)有限公司 | 一种分布式文件系统中基于后缀树的目录组织方法 |
CN107634832A (zh) * | 2017-09-12 | 2018-01-26 | 云南撇捺势信息技术有限公司 | 字符串加密、验证方法、装置、计算机可读存储介质 |
CN114691039A (zh) * | 2022-03-22 | 2022-07-01 | 北京达佳互联信息技术有限公司 | 数据处理方法、装置、电子设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
李长河, vol. 978, 中国地质大学出版社, pages: 353 - 354 * |
Also Published As
Publication number | Publication date |
---|---|
CN115686380B (zh) | 2024-04-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10284372B2 (en) | Method and system for secure management of computer applications | |
CN111475824B (zh) | 数据访问方法、装置、设备和存储介质 | |
US7841010B2 (en) | Software or other information integrity verification using variable block length and selection | |
US8175268B2 (en) | Generating and securing archive keys | |
JP5735539B2 (ja) | ネットワークを介して送信されるデータの暗号化および復号化システム、装置、および方法 | |
EP1227613B1 (en) | Method and apparatus for attaching electronic signature to document having structure | |
US20130290731A1 (en) | Systems and methods for storing and verifying security information | |
CN113391880B (zh) | 一种分层双重哈希验证的可信镜像传输方法 | |
CN114327261B (zh) | 数据文件的存储方法及数据安全代理 | |
CN114880697A (zh) | 基于区块链的数据指纹生成方法、装置和存储介质 | |
CN115248919A (zh) | 一种函数接口的调用方法、装置、电子设备及存储介质 | |
Vaidya et al. | Commit signatures for centralized version control systems | |
CN114218615A (zh) | 一种金融系统中防止日志篡改的方法、装置、设备和介质 | |
CN116235174A (zh) | 用于执行加密算法的设备和方法 | |
US20130290732A1 (en) | Systems and methods for storing and verifying security information | |
CN111291001B (zh) | 计算机文件的读取方法、装置、计算机系统及存储介质 | |
US11741248B2 (en) | Data access control using data block level encryption | |
CN117349860A (zh) | 一种基于矩阵变化和数据切分的文件存储系统及方法 | |
CN109218011B (zh) | 一种基于md5的移动终端多媒体资源验证方法 | |
CN111984989A (zh) | 一种自身校验发布和访问url的方法、装置、系统和介质 | |
CN117093964A (zh) | 一种源代码的加密方法、装置、存储介质及电子设备 | |
CN111104693A (zh) | 一种Android平台软件数据破解方法、终端设备及存储介质 | |
CN115686380B (zh) | 一种文件存储的方法、装置、计算机设备及存储介质 | |
CN114461672A (zh) | 数据检索方法、装置、计算机设备及存储介质 | |
US11580091B2 (en) | Method of ensuring confidentiality and integrity of stored data and metadata in an untrusted environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |