CN106227830A - 存储和读取文件的方法和装置 - Google Patents
存储和读取文件的方法和装置 Download PDFInfo
- Publication number
- CN106227830A CN106227830A CN201610592268.8A CN201610592268A CN106227830A CN 106227830 A CN106227830 A CN 106227830A CN 201610592268 A CN201610592268 A CN 201610592268A CN 106227830 A CN106227830 A CN 106227830A
- Authority
- CN
- China
- Prior art keywords
- filename
- length
- character string
- file
- stored
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/164—File meta data generation
- G06F16/166—File name conversion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开实施例提供一种存储和读取文件的方法和装置,属于文件处理技术领域。其中,存储文件的方法包括:获取待存储文件的文件名,判断文件名的长度是否大于预设长度,预设长度包括待存储系统允许的最大文件名长度;若文件名的长度大于预设长度,则将文件名转换成固定长度的字符串,其中,固定长度小于等于预设长度;存储以字符串为文件名的待存储文件以及文件名与字符串之间的映射关系。本公开实施例通过判断待存储/待读取的文件的文件名是否超过预设长度,进而将超过预设长度的文件名转换成固定长度的字符串,从而可以使超长文件名正常存储和读取。进一步地,用于分布式对象存储时,超长文件名的文件也能正常写到底层文件系统上。
Description
技术领域
本发明涉及文件处理技术领域,尤其涉及一种存储和读取文件的方法和装置。
背景技术
对象存储在互联网的大潮中受到了广泛关注,并得到了迅速的发展。对象存储与文件存储不同,对象不以目录分层的结构进行组织。每个对象都位于被称为存储池的扁平的空间的相同层级,每一级的每个元素在存储系统中都有唯一的标识,用户通过这个标识来访问容器或者对象。对象存储采用扁平的数据组织结构,抛弃了嵌套的文件夹,避免维护庞大的目录树。在大数据和互联网时代,存储的文件/对象超过上百万个,单位时间内的访问次数和并发访问量也达到了前所未有的量级。在这种情况下,目录树会给存储系统带来很大的开销和诸多问题,成为系统的瓶颈。另外一个让对象存储焕发生命力的因素是,对象存储不再提供POSIX兼容的接口(如open,close,read,write等),而是可以非常方便地通过HTTP Restful API接口和对象进行交互:通过PUT和GET进行上传下载,通过DELETE进行删除。
对象存储可以为用户提供视频、音乐等较大文件的存储,也可以提供日志的服务。另外,对象存储取得更大发展的一大因素是获得了移动互联网的青睐。在移动端的APP中,对象存储简单的HTTP接口简化了开发者的开发流程,并且还可以为用户提供海量的存储空间。
对象存储与文件存储类似,一个对象存储的桶相当于一个文件存储中的根目录,而一个对象存储中的对象相当于一个文件存储中的文件,因为对象存储采用的是扁平的目录结构,因此如果跟文件存储对比,看起来就是全部的文件都在同一个目录底下。
在分布式对象存储中,通常都会使用通用的文件系统(比如xfs或者ext4)等作为本地存储,本地存储即在多副本存储中的一个副本,比如在编号为(1,2,3)的三块磁盘上创建了文件系统,则每个文件都需要写到这三块磁盘之上。按照对象存储的规格,对象存储的文件名没有限制,但是底层文件系统的文件名却有限制,比如xfs允许的文件名的最大长度是255个字节。发明人发现,当用户上传过长的文件名时,如果不做适配,那么文件名将不能正常的写到底层文件系统上。
发明内容
针对现有技术存在的一个或多个问题,本公开实施例提供一种存储和读取文件的方法和装置。
本公开实施例提供一种存储文件的方法,包括:获取待存储文件的文件名,判断文件名的长度是否大于预设长度,预设长度包括待存储系统允许的最大文件名长度;若文件名的长度大于预设长度,则将文件名转换成固定长度的字符串,其中,固定长度小于等于预设长度;存储以字符串为文件名的待存储文件以及文件名与字符串之间的映射关系。
本公开实施例提供一种读取文件的方法,包括:获取待读取的文件的文件名,判断文件名的长度是否大于预设长度,预设长度包括待存储系统允许的最大文件名长度;若大于预设长度,则将文件名转换成固定长度的字符串,其中,固定长度小于等于预设长度;基于字符串,获取与字符串关联的原文件名,其中,待存储系统中存储有字符串和与字符串关联的原文件名的映射关系;验证待读取文件的文件名与关联的原文件名是否一致,若一致,则读取以字符串为文件名的文件。
本公开实施例提供一种存储文件的装置,包括:文件名判断模块,配置用于获取待存储文件的文件名,判断文件名的长度是否大于预设长度,预设长度包括待存储系统允许的最大文件名长度;字符串转换模块,配置用于若文件名的长度大于预设长度,则将文件名转换成固定长度的字符串,其中,固定长度小于等于预设长度;存储模块,配置用于存储以字符串为文件名的待存储文件以及文件名与字符串之间的映射关系。
本公开实施例提供一种读取文件的装置,包括:读取判断模块,配置用于获取待读取的文件的文件名,判断文件名的长度是否大于预设长度,预设长度包括待存储系统允许的最大文件名长度;读取转换模块,配置用于若大于预设长度,则将文件名转换成固定长度的字符串,其中,固定长度小于等于预设长度;原文件名获取模块,配置用于基于字符串,获取与字符串关联的原文件名,其中,待存储系统中存储有字符串和与字符串关联的原文件名的映射关系;以及验证读取模块,配置用于验证待读取文件的文件名与关联的原文件名是否一致,若一致,则读取以字符串为文件名的文件。
本公开实施例提供的存储和读取文件的方法和装置,通过判断待存储/待读取的文件的文件名是否超过预设长度,进而将超过预设长度的文件名转换成固定长度的字符串,从而可以使超长文件名正常存储和读取。进一步地,用于分布式对象存储时,超长文件名的文件也能正常写到底层文件系统上。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本公开存储和读取文件的方法的一个实施例流程图;
图2为本公开存储和读取文件的方法的又一个实施例流程图;
图3为本公开存储和读取文件的方法的再一个实施例流程图;
图4为本公开存储和读取文件的方法的还一个实施例流程图;
图5为本公开存储和读取文件的装置的一个实施例结构示意图;
图6为本公开存储和读取文件的装置的又一个实施例结构示意图;
图7为根据本公开实施例提供的一种用户设备的结构示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本公开。
请参考图1,其示出了本公开存储和读取文件的方法的一个实施例流程图100。
如图1所示,在步骤101中,获取待存储文件的文件名,判断文件名的长度是否大于预设长度。
在本实施例中,存储文件的装置获取待存储文件的文件名,并判断该文件名是否大于预设长度,其中,预设长度包括待存储系统允许的最大文件名长度。待存储系统可以是分布式对象存储系统中的底层文件系统,其中,该底层文件系统,比如XFS文件系统允许的文件名的最大长度是255个字节,当用户上传超长的文件名时,如果不做适配,那么将不能正常的写入到底层文件系统上。待存储文件系统还可以是其他对文件名最大长度有限制的系统,例如FAT、NTFS、EXT、CDFS、ZFS、HFS、UFS以及VXFS等文件系统或者未来开发的新的文件系统,本公开在此方面没有限制。
之后,在步骤102中,若文件名的长度大于预设长度,则将文件名转换成固定长度的字符串。
在本实施例中,存储文件的装置判断之后得出文件名的长度大于预设长度,则将该文件名转换成固定长度的字符串,其中,固定长度小于等于预设长度,以使文件名长度满足存储标准。例如,待存储系统允许的最大文件名长度是255字节,则固定长度可以为255字节或者小于255字节。其中,该字符串例如可以由一个或多个部分组成部分构成,该转换过程例如可以包括对超长文件名进行MD5值计算,或者使用其他现在已知或者未来发明的新的算法将超长文件名转换成固定长度的字符串。该字符串还可以由多个部分组成,例如可以有固定的后缀,该后缀用来标记该文件名是经过更改的,还可以保留一部分原文件名,以使用户或系统用部分文件名查找时可以找到相应的文件,提高文件名的可读性。进一步地,还可以有上述多个组成部分组成,以形成易于识别、易于查找、易于存储的文件名。
最后,在步骤103中,存储以字符串为文件名的待存储文件以及文件名与字符串之间的映射关系。
在本实施例中,存储文件的装置可以以该转换后的字符串为文件名存储该文件,以及存储该文件名与转换后的字符串之间的映射关系。其中,可以将文件存储在相应的文件系统里面,例如XFS文件系统,将映射关系存储在数据库中,便于之后对相应的文件的管理。进一步地,还可以将映射关系存储在文件系统的拓展属性中,以使系统对原始文件名的文件的查找更加快捷,当然,也可以存储在文件系统或者整个设备的其他部分,本公开在此方面没有限制。
在本实施例中,通过在存储的过程中,判断出超长的文件名,之后对超长文件名进行处理以使超长文件名转换成满足长度要求的文件名以正常存储到待存储系统中,可以克服某些文件系统对文件名长度的限制。
进一步参考图2,其示出了本公开存储和读取文件的方法的又一个实施例流程图200。
流程图200示出了对图1中步骤102的进一步细化。
如图2所示,在步骤201中,将文件名的部分或全部按照预定算法转换成字符串的一个组成部分,预定算法包括MD5算法。
在本实施例中,存储文件的装置将文件名的部分或者全部按照预定算法转换成字符串的一个组成部分,或者也可以是最终的字符串。其中,预定算法可以包括MD5算法,例如原文件名长度为299字节,则可以经过MD5计算将其转换成16字节的字符串,可以将该16字节的字符串直接存储在相应的待存储系统中。也可以再加入新的组成部分,例如前缀、后缀或者截取一部分文件名。
在步骤202中,截取文件名中等于阈值长度的部分作为字符串的一个组成部分。
在本实施例中,存储文件的装置还可以截取文件名中等于阈值长度的部分作为字符串的一个组成部分,其中,阈值长度小于固定长度。通过加入该部分,可以提高转换后的字符的可读性,便于文件的管理。例如,原文件名长度为299字节,可以截取其中的229字节的部分作为转换后的字符串的一个组成部分。
进一步地,在步骤203中,加入预定的前缀或后缀作为字符串的一个组成部分,预定的前缀或后缀包括根据文件名的类型生成。
在本实施例中,存储文件的装置还可以加入预定的前缀或者后缀作为转换后的字符串的一个组成部分。例如,加入一个“_long99991”(其中99991为100000以内的最大质数)作为字符串的后缀。该后缀可以用来标记该文件名是经过转换的文件名,也可以用来标记文件的类型,例如不同类型的文件用不同的文件名,还可以用来标记文件的其他属性,例如原来的长度等,本公开在此方面没有限制。
需要说明的是,以上各个步骤并不一定要都有。例如可以只有步骤201或步骤202,也可以有一个或多个步骤的组合,并且每一个步骤中提到的组成部分在字符串中的位置也是不固定的,例如步骤201中的组成部分可以位于字符串的中间,也可以位于字符串的其他部分,本公开在此方面没有限制。例如如果三个步骤都有的话,步骤201通过MD5形成的md5string可以位于中间部分,步骤203的截取的shortname可以位于整个字符串的前部,步骤203的前缀或后缀可以例如作为后缀suffix位于字符串的后面,最终的字符串filename可以是这样拼接而成的:filename=shortname+md5string+suffix,通过这样的方式来保证文件名与字符串映射的一致性。
在本实施例中,通过以上步骤,可以实现对超长文件名到固定长度的字符串的转换,使超长文件名的文件也能正常存入相应的文件系统中,以突破文件系统对文件名长度的限制。并且由于转换是基于预设的规则,之后也可以基于相同的规则进行查找等操作。
进一步参考图3,其示出了本公开存储和读取文件的方法的再一个实施例流程图300。
流程图300示出了对图1中步骤103的进一步细化。
如图3所示,在步骤301中,将以字符串为文件名的待存储文件存储在待存储系统中。
在本实施例中,由于存储文件的装置对超长文件名进行了转换,可以使超长的文件名以转换后的字符串为文件名存入系统中。
在步骤302中,将文件名与字符串之间的映射关系存储在待存储系统的扩展属性中。
在本实施例中,存储文件的装置可以将将文件名与字符串之间的映射关系存储在待存储系统的扩展属性中。通过将映射关系存在待存储系统的扩展属性中,可以方便对文件和文件名的管理,进一步地,由于直接存储在待存储系统的扩展属性中,可以使查找速度更快。
需要说明的是,以上各个图中所述的存储文件的装置可以单独的用于存储超长文件名的文件的装置,也可以是在原有的文件系统的基础上拓展出来的一个新的功能,本公开在此方面没有限制。
进一步参考图4,其示出了本公开存储和读取文件的方法的还一个实施例流程图400。
如图4所示,在步骤401中,获取待读取的文件的文件名,判断文件名的长度是否大于预设长度。
在本实施例中,读取文件的装置获取待读取的文件的文件名,并判断该文件名的长度是否大于预设长度。其中,预设长度可以包括待存储系统允许的最大文件名长度,例如XFS文件系统中允许的最大的文件名的长度为255个字节。
继而,在步骤402中,若大于预设长度,则将文件名转换成固定长度的字符串。
在本实施例中,如果之前判断的结果是大于预设长度,则可以将该文件名转换成固定长度的字符串,其中,固定长度小于等于预设长度。例如,固定长度可以是255个字节,也可以是更少的字节。可选的,转换的过程可以是通过预定的算法(例如MD5算法)将文件名的全部或者部分转换成固定长度的字符串。进一步地,该字符串还可以有其他的组成部分,例如可以有固定格式的前缀后者后缀已对该文件进行标记,例如可以通过该标记识别该文件是经过转换后的,或者还可以用来标记该文件的其他类型。可选的,该文件还可以保留阈值长度的部分以便于对该文件名的检索和查询,该阈值长度可以设置为小于固定长度。需要说明的是,该读取规则与之前存储超长文件名的规则一致,因此可以通过该规则找到相应的经过转换的原文件名。
之后,在步骤403中,基于字符串,获取与字符串关联的原文件名。
在本实施例中,读取文件的系统可以基于之前转换的字符串,在相关的文件系统中查找对应的原文件名。其中,在待存储系统中存储有字符串和与字符串关联的原文件名的映射关系。
最后,在步骤404中,验证待读取文件的文件名与关联的原文件名是否一致,若一致,则读取以字符串为文件名的文件。
在本实施例中,读取文件的装置通过验证待读取文件的文件名是否与之前或取得原文件名一致,即可判断是否是用户或者系统想要读取的那个文件名。可以使文件的读取多一重保障。
在本实施例中,通过对待读取的文件进行相应的转换以查找到见过转换后的字符串,从而找到相应的文件,进一步地,通过比对待读取的文件名是否与原文件名一致,可以避免查找到错误的文件名,使查找更加精确。
请参考图5,其示出了本公开存储文件的装置中的存储文件的装置的一个实施例结构示意图。
如图5所示,存储文件的装置500包括文件名判断模块501、字符串转换模块502和存储模块503。其中,文件名判断模块501,配置用于获取待存储文件的文件名,判断文件名的长度是否大于预设长度,预设长度包括待存储系统允许的最大文件名长度;字符串转换模块502,配置用于若文件名的长度大于预设长度,则将文件名转换成固定长度的字符串,其中,固定长度小于等于预设长度;以及存储模块503,配置用于存储以字符串为文件名的待存储文件以及文件名与字符串之间的映射关系。
在一些可选的实施例中,字符串转换模块502进一步包括第一组成模块(图中未示出),配置用于将文件名的部分或全部按照预定算法转换成字符串的一个组成部分,预定算法包括MD5算法。
在另一些可选的实施例中,字符串转换模块502还进一步包括第二组成模块和/或第三组成模块(图中未示出)。其中,第二组成模块,配置用于截取文件名中等于阈值长度的部分作为字符串的一个组成部分,其中,阈值长度小于固定长度;以及第三组成模块,配置用于加入预定的前缀或后缀作为字符串的一个组成部分,预定的前缀或后缀包括根据文件名的类型生成。
在另一些可选的实施例中,存储模块503包括文件存储模块和映射关系存储模块(图中未示出)。其中,文件存储模块,配置用于将以字符串为文件名的待存储文件存储在待存储系统中;以及映射关系存储模块,配置用于将文件名与字符串之间的映射关系存储在待存储系统的扩展属性中。
在本实施例中,存储文件的装置500通过将超长文件名转换成符合要求的字符串再存储,可以实现对超长字符串的正常存储,是文件系统可以突破文件名长度的限制。
进一步参考图6,其示出了本公开存储和读取文件的装置的读取文件的装置的一个实施例结构示意图。
如图6所示,读取文件的装置600包括读取判断模块601、读取转换模块602、原文件名获取模块603以及验证读取模块604。其中,读取判断模块601,配置用于获取待读取的文件的文件名,判断文件名的长度是否大于预设长度,预设长度包括待存储系统允许的最大文件名长度;读取转换模块602,配置用于若大于预设长度,则将文件名转换成固定长度的字符串,其中,固定长度小于等于预设长度;原文件名获取模块603,配置用于基于字符串,获取与字符串关联的原文件名,其中,待存储系统中存储有字符串和与字符串关联的原文件名的映射关系;以及验证读取模块604,配置用于验证待读取文件的文件名与关联的原文件名是否一致,若一致,则读取以字符串为文件名的文件。
在本实施例中,读取文件的装置600通过将超长文件名转换之后在读取相应的转换后的文件名的文件,并验证待读取的文件名是否与原文件名一致以保障读取的正确性。
应当理解,图5和图6中记载的诸模块与参考图1和图4中描述的方法中的各个步骤相对应。由此,上文针对方法描述的操作和特征以及相应的技术效果同样适用于图5和图6中的诸模块,在此不再赘述。
以上所述的各个系统以及方法中网络均可以为一个服务器或者服务器集群,其中上述每一个模块也可以是单独的服务器或者服务器集群,此时,上述模块之间的交互表现为各模块所对应的服务器之间的交互。
进一步地,本公开还提供一种非瞬时的计算机可读存储介质,所述存储介质中存储有一个或多个包括执行指令的程序,所述执行指令能够被带有控制界面的电子设备执行,以用于执行上述方法实施例中的图1和图4或者还包括图2和图3中的相关步骤,例如:
获取待存储文件的文件名,判断文件名的长度是否大于预设长度,预设长度包括待存储系统允许的最大文件名长度;
若文件名的长度大于预设长度,则将文件名转换成固定长度的字符串,其中,固定长度小于等于预设长度;
存储以字符串为文件名的待存储文件以及文件名与字符串之间的映射关系。
图7为本公开实施例提供的一种用户设备700的结构示意图,本公开具体实施例并不对用户设备700的具体实现做限定。如图7所示,该用户设备700可以包括:
处理器(processor)710、通信接口(Communications Interface)720、存储器(memory)730、以及通信总线740。其中:
处理器710、通信接口720、以及存储器730通过通信总线740完成相互间的通信。
通信接口720,用于与比如客户端等的网元通信。
处理器710,用于执行存储器730中的程序732,以执行上述方法实施例中的相关步骤。
具体地,程序732可以包括程序代码,所述程序代码包括计算机操作指令。
处理器710可能是一个中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本公开实施例的一个或多个集成电路。
存储器730,用于存放程序732。存储器730可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。程序732具体可以用于使得所述用户设备700执行图1和图4中的相关步骤。
程序732中各步骤的具体实现可以参见上述实施例中的相应步骤和单元中对应的描述,在此不赘述。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的设备和模块的具体工作过程,可以参考前述方法实施例中的对应过程描述,在此不再赘述。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本公开的技术方案,而非对其限制;尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本公开各实施例技术方案的精神和范围。
Claims (10)
1.一种存储文件的方法,包括:
获取待存储文件的文件名,判断所述文件名的长度是否大于预设长度,所述预设长度包括待存储系统允许的最大文件名长度;
若所述文件名的长度大于预设长度,则将所述文件名转换成固定长度的字符串,其中,所述固定长度小于等于所述预设长度;
存储以所述字符串为文件名的所述待存储文件以及所述文件名与所述字符串之间的映射关系。
2.根据权利要求1所述的方法,所述若所述文件名的长度大于预设长度,则将所述文件名转换成固定长度的字符串包括:
将所述文件名的部分或全部按照预定算法转换成所述字符串的一个组成部分,所述预定算法包括MD5算法。
3.根据权利要求2所述的方法,所述若所述文件名的长度大于预设长度,则将所述文件名转换成固定长度的字符串还包括:
截取所述文件名中等于阈值长度的部分作为所述字符串的一个组成部分,其中,所述阈值长度小于所述固定长度;和/或
加入预定的前缀或后缀作为所述字符串的一个组成部分,所述预定的前缀或后缀包括根据所述文件名的类型生成。
4.根据权利要求1所述的方法,所述存储以所述字符串为文件名的所述待存储文件以及所述文件名与所述字符串之间的映射关系包括:
将以所述字符串为文件名的所述待存储文件存储在所述待存储系统中;
将所述文件名与所述字符串之间的映射关系存储在所述待存储系统的扩展属性中。
5.一种读取文件的方法,包括:
获取待读取的文件的文件名,判断所述文件名的长度是否大于预设长度,所述预设长度包括待存储系统允许的最大文件名长度;
若大于预设长度,则将所述文件名转换成固定长度的字符串,其中,所述固定长度小于等于所述预设长度;
基于所述字符串,获取与所述字符串关联的原文件名,其中,所述待存储系统中存储有所述字符串和与所述字符串关联的原文件名的映射关系;
验证所述待读取文件的文件名与所述关联的原文件名是否一致,若一致,则读取以所述字符串为文件名的文件。
6.一种存储文件的装置,包括:
文件名判断模块,配置用于获取待存储文件的文件名,判断所述文件名的长度是否大于预设长度,所述预设长度包括待存储系统允许的最大文件名长度;
字符串转换模块,配置用于若所述文件名的长度大于预设长度,则将所述文件名转换成固定长度的字符串,其中,所述固定长度小于等于所述预设长度;以及
存储模块,配置用于存储以所述字符串为文件名的所述待存储文件以及所述文件名与所述字符串之间的映射关系。
7.根据权利要求6所述的装置,所述字符串转换模块包括:
第一组成模块,配置用于将所述文件名的部分或全部按照预定算法转换成所述字符串的一个组成部分,所述预定算法包括MD5算法。
8.根据权利要求7所述的装置,所述字符串转换模块还包括:
第二组成模块,配置用于截取所述文件名中等于阈值长度的部分作为所述字符串的一个组成部分,其中,所述阈值长度小于所述固定长度;和/或
第三组成模块,配置用于加入预定的前缀或后缀作为所述字符串的一个组成部分,所述预定的前缀或后缀包括根据所述文件名的类型生成。
9.根据权利要求6所述的装置,所述存储模块包括:
文件存储模块,配置用于将以所述字符串为文件名的所述待存储文件存储在所述待存储系统中;
映射关系存储模块,配置用于将所述文件名与所述字符串之间的映射关系存储在所述待存储系统的扩展属性中。
10.一种读取文件的装置,包括:
读取判断模块,配置用于获取待读取的文件的文件名,判断所述文件名的长度是否大于预设长度,所述预设长度包括待存储系统允许的最大文件名长度;
读取转换模块,配置用于若大于预设长度,则将所述文件名转换成固定长度的字符串,其中,所述固定长度小于等于所述预设长度;
原文件名获取模块,配置用于基于所述字符串,获取与所述字符串关联的原文件名,其中,所述待存储系统中存储有所述字符串和与所述字符串关联的原文件名的映射关系;以及
验证读取模块,配置用于验证所述待读取文件的文件名与所述关联的原文件名是否一致,若一致,则读取以所述字符串为文件名的文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610592268.8A CN106227830A (zh) | 2016-07-25 | 2016-07-25 | 存储和读取文件的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610592268.8A CN106227830A (zh) | 2016-07-25 | 2016-07-25 | 存储和读取文件的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106227830A true CN106227830A (zh) | 2016-12-14 |
Family
ID=57533247
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610592268.8A Pending CN106227830A (zh) | 2016-07-25 | 2016-07-25 | 存储和读取文件的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106227830A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111858494A (zh) * | 2020-07-23 | 2020-10-30 | 珠海豹趣科技有限公司 | 文件获取方法、装置、存储介质及电子设备 |
CN112351111A (zh) * | 2020-12-30 | 2021-02-09 | 常州微亿智造科技有限公司 | 一种工业质检文件上传服务器端近实时进度监控方法 |
GB2623151A (en) * | 2022-07-25 | 2024-04-10 | Dell Products Lp | Systems and methods for managing path and file names using a universal connector |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101051319A (zh) * | 2007-05-11 | 2007-10-10 | 北京中星微电子有限公司 | 文件分配系统中的文件名生成方法及生成装置 |
CN101673261A (zh) * | 2008-09-10 | 2010-03-17 | 上海摩波彼克半导体有限公司 | 短文件名文件系统中实现支持长文件名的系统结构及方法 |
CN104536699A (zh) * | 2014-12-11 | 2015-04-22 | 中国科学院声学研究所 | 一种基于嵌入式文件系统的流式数据写入方法 |
-
2016
- 2016-07-25 CN CN201610592268.8A patent/CN106227830A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101051319A (zh) * | 2007-05-11 | 2007-10-10 | 北京中星微电子有限公司 | 文件分配系统中的文件名生成方法及生成装置 |
CN101673261A (zh) * | 2008-09-10 | 2010-03-17 | 上海摩波彼克半导体有限公司 | 短文件名文件系统中实现支持长文件名的系统结构及方法 |
CN104536699A (zh) * | 2014-12-11 | 2015-04-22 | 中国科学院声学研究所 | 一种基于嵌入式文件系统的流式数据写入方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111858494A (zh) * | 2020-07-23 | 2020-10-30 | 珠海豹趣科技有限公司 | 文件获取方法、装置、存储介质及电子设备 |
CN111858494B (zh) * | 2020-07-23 | 2024-05-17 | 珠海豹趣科技有限公司 | 文件获取方法、装置、存储介质及电子设备 |
CN112351111A (zh) * | 2020-12-30 | 2021-02-09 | 常州微亿智造科技有限公司 | 一种工业质检文件上传服务器端近实时进度监控方法 |
CN112351111B (zh) * | 2020-12-30 | 2023-01-03 | 常州微亿智造科技有限公司 | 一种工业质检文件上传服务器端近实时进度监控方法 |
GB2623151A (en) * | 2022-07-25 | 2024-04-10 | Dell Products Lp | Systems and methods for managing path and file names using a universal connector |
US12007946B2 (en) | 2022-07-25 | 2024-06-11 | Dell Products L.P. | Systems and methods for managing path and file names using a universal connector |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10430398B2 (en) | Data storage system having mutable objects incorporating time | |
US8489549B2 (en) | Method and system for resolving conflicts between revisions to a distributed virtual file system | |
US20150302111A1 (en) | Method and Apparatus for Constructing File System in Key-Value Storage System, and Electronic Device | |
US9396290B2 (en) | Hybrid data management system and method for managing large, varying datasets | |
CN110321325B (zh) | 文件索引节点查找方法、终端、服务器、系统及存储介质 | |
EP1587006A2 (en) | Method and system for renaming consecutive keys in a B-tree | |
CN103282899B (zh) | 文件系统中数据的存储方法、访问方法及装置 | |
US8495022B1 (en) | Systems and methods for synthetic backups | |
US7636736B1 (en) | Method and apparatus for creating and using a policy-based access/change log | |
US8768980B2 (en) | Process for optimizing file storage systems | |
US8321487B1 (en) | Recovery of directory information | |
GB2439578A (en) | Virtual file system with links between data streams | |
JP2012098934A (ja) | 文書管理システム、文書管理システムの制御方法、プログラム | |
US9020994B1 (en) | Client-based migrating of data from content-addressed storage to file-based storage | |
CN102024019B (zh) | 一种分布式文件系统中基于后缀树的目录组织方法 | |
US9600486B2 (en) | File system directory attribute correction | |
CN106682003B (zh) | 分布式存储命名空间的路径分割映射方法和装置 | |
US20080005524A1 (en) | Data processing | |
CN111045857A (zh) | 数据备份和恢复的方法、电子设备和计算机可读存储介质 | |
CN104156381A (zh) | Hadoop分布式文件系统的副本存取方法、装置和Hadoop分布式文件系统 | |
US20100058023A1 (en) | Efficiently managing modular data storage systems | |
CN106227830A (zh) | 存储和读取文件的方法和装置 | |
CN111104377A (zh) | 文件管理的方法、电子设备和计算机可读存储介质 | |
de la Prieta et al. | Multi-agent system for controlling a cloud computing environment | |
CN103246718A (zh) | 文件访问方法、装置和设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20161214 |
|
WD01 | Invention patent application deemed withdrawn after publication |