一种压缩文件解压的方法以及装置与流程

文档序号:12667668阅读:178来源:国知局
一种压缩文件解压的方法以及装置与流程

本发明涉及云存储领域,特别是涉及一种压缩文件解压的方法以及装置。



背景技术:

随着网络技术和云技术的不断发展,云技术的应用也越来越广泛。

云存储是云技术的应用之一,其可以将文件存储至网盘服务器,即用户可以将各种各样的文件或数据上传至云端服务器,进行相应存储。云端存储可以保证文件永不丢失,也可以进行数据同步等。云端存储的文件是各式各样的,其中就包括压缩文件,例如Zip压缩文件。当用户将压缩文件存储于网盘服务器上之后,可能需要对压缩文件进行查看,进一步地,也可能需要将压缩文件进行解压,以进行后续操作。

但是,现有技术中还无法在网盘服务器解压压缩文件,故如何在网盘服务器上解压压缩文件是本领域亟待解决的问题。



技术实现要素:

本发明的目的是提供一种压缩文件解压的方法以及装置,目的在于解决现有技术中网盘服务器无法解压压缩文件的问题。

为解决上述技术问题,本发明提供一种压缩文件解压的方法,该方法包括:

网盘服务端获取待解压文件的文件信息;

所述网盘服务端根据所述文件信息,调用解压应用程序编程接口对所述待解压文件进行解压操作,得到解压文件。

可选地,所述网盘服务端根据所述文件信息,调用解压应用程序编程接口对所述待解压文件进行解压操作,得到解压文件包括:

所述网盘服务端对所述待解压文件内所包含的待解压对象进行循环遍历,判断当前待解压对象的类别,所述待解压对象为文件或文件夹;

当所述待解压对象为文件夹时,创建文件夹,并对所述待解压对象进行解压操作,得出解压后的文件夹数据;

当所述待解压对象为文件时,对所述待解压对象进行解压操作,得出解压后的文件数据。

可选地,在所述网盘服务端根据所述文件信息,调用解压应用程序编程接口对所述待解压文件进行解压操作,得到解压文件之后还包括:

所述网盘服务端将所述文件数据和所述文件夹数据存储至指定存储队列。

可选地,在所述网盘服务端将所述文件数据和所述文件夹数据存储至指定存储队列之后还包括:

所述网盘服务端对所述指定存储队列进行循环遍历,找出所述文件数据所在文件夹的预设的第一文件夹ID信息,找出所述文件夹数据对应的预设的第二文件夹ID信息,并将所述第一文件夹ID信息和所述第二文件ID信息存储至数据库;

根据第一预设存储格式,将所述文件数据存储至数据库,以得出所述解压文件的目录结构关系。

可选地,在所述根据第二预设存储格式,将所述文件夹数据存储至所述数据库,以得出所述解压文件的目录结构关系之后还包括:

所述网盘服务端获取用户的文件列表查看指令;

根据所述文件列表查看指令,从所述数据库中读取所述目录结构关系,以使所述用户查看到相应的文件列表。

可选地,所述解压应用程序编程接口为Java zip API。

此外,本发明还提供了一种压缩文件解压的装置,该装置包括:

网盘服务端获取模块,用于获取待解压文件的文件信息;

网盘服务端解压模块,用于根据所述文件信息,调用解压应用程序编程接口对所述待解压文件进行解压操作,得到解压文件。

可选地,所述网盘服务端解压模块包括:

遍历判断单元,用于对所述待解压文件内所包含的待解压对象进行循环遍历,判断当前待解压对象的类别,所述待解压对象为文件或文件夹;

创建解压单元,用于当所述待解压对象为文件夹时根,创建文件夹,并对所述待解压对象进行解压操作,得出解压后的文件夹数据;

解压单元,用于当所述待解压对象为文件时,对所述待解压对象进行解压操作,得出解压后的文件数据。

可选地,还包括:

网盘服务端存储模块,用于将所述文件数据和所述文件夹数据存储至指定存储队列。

可选地,还包括:

网盘服务端寻找存储模块,用于对所述指定存储队列进行循环遍历,找出所述文件数据所在文件夹的预设的第一文件夹ID信息,找出所述文件夹数据对应的预设的第二文件夹ID信息,并将所述第一文件夹ID信息和所述第二文件ID信息存储至数据库;

网盘服务端第一存储模块,用于根据第一预设存储格式,将所述文件数据存储至数据库,以得出所述解压文件的目录结构关系。

本发明所提供的一种压缩文件解压的方法以及装置,网盘服务端获取待解压文件的文件信息;上述网盘服务端根据上述文件信息,调用解压应用程序编程接口对上述待解压文件进行解压操作,得到解压文件。通过获得待解压文件的文件信息,上述待解压文件存储于上述网盘服务端上,上述网盘服务端可以通过调用解压应用程序编程接口来对待解压文件进行解压操作,以实现在网盘服务端上解压压缩文件。

附图说明

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

图1为本发明实施例所提供的压缩文件解压方法的一种具体实施方式的流程示意图;

图2为本发明实施例所提供的Zip文件解压代码片段;

图3为本发明实施例所提供的文件表数据字典;

图4为本发明实施例所提供的文件夹表数据字典;

图5为本发明实施例所提供的目录结构生成流程图的一种具体实施方式的流程示意图;

图6为本发明实施例所提供的目录结构生成代码片段;

图7为本发明实施例所提供的压缩文件解压装置的结构框图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参见图1,图1为本发明实施例所提供的压缩文件解压方法的一种具体实施方式的流程示意图,该解压方法包括以下步骤:

步骤101:网盘服务端获取待解压文件的文件信息;

需要说明的是,上述待解压文件存储于上述网盘服务端上。上述文件信息可以包括表征上述待解压文件内所包含的各个文件的信息,以及上述待解压文件的整体信息,例如,文件信息可以包括待解压文件的名称信息、存储路径信息以及待解压文件内所包含的各个文件的名称信息等等。

上述待解压文件即压缩文件的格式可以是任意地,例如为Zip格式。

可以理解的是,在进行解压操作之前,网盘服务端可以提前获取存储于网盘服务端上,需要解压的压缩文件的具体信息,以便后续解压过程可以进行相应的操作。

步骤102:所述网盘服务端根据所述文件信息,调用解压应用程序编程接口对所述待解压文件进行解压操作,得到解压文件。

可以理解的是,上述解压应用程序编程接口可以具体为Java zip API,此时上述待解压文件为Zip压缩文件,上述网盘服务端可以利用Java的Zip压缩文件操作相应API,利用对应的解压缩技术,以实现文件的解压工作;上述解压应用程序编程接口也可以具体为其它类型的API,此时相应的解压过程也会有所不同,在此不再赘述。

文件解压过程可以是对待解压文件内的每一个文件进行解压缩操作,并将解压出来的文件存储至指定保存路径。

由于待解压文件内所包含的待解压对象可能是文件,也可能是文件夹,不同的待解压对象,解压操作也会不同,故可以对待解压文件内的所有实体解压时,先判断待解压对象的类别,再进行相应解压操作。

在本发明的一些实施例中,文件解压过程可以具体为:所述网盘服务端对所述待解压文件内所包含的待解压对象进行循环遍历,判断当前待解压对象的类别,所述待解压对象为文件或文件夹;当所述待解压对象为文件夹时,创建文件夹,并对所述待解压对象进行解压操作,得出解压后的文件夹数据;当所述待解压对象为文件时,对所述待解压对象进行解压操作,得出解压后的文件数据。

具体地,,当判断出当前遍历的待解压对象为文件时,则可以直接对该待解压对象进行解压操作,并且可以将解压之后的文件数据写入磁盘;而当判断出当前遍历的待解压对象为文件夹时,则可以先创建一个文件夹,而文件夹的创建可以根据解压前所获取的文件信息,例如,文件信息表明待解压对象文件夹的名称为A,创建的文件夹的名称也应为A,文件创建后再进行相应的解压操作。

当上述待解压文件为Zip压缩文件,解压应用程序编程接口具体为Java zip API时,其解压过程可以利用ZipFile类和ZipEntry类,来实现Zip压缩文件的解压操作,而循环遍历待解压文件可以具体由while循环实现。其利用Java语言来解压Zip文件的实现代码具体可以参见图2,图2为本发明实施例所提供的Zip文件解压代码片段。

将待解压文件进行解压缩之后,得到解压后的文件数据,最终可以等到一个与待解压文件相应的解压后的文件夹,该文件夹独立与待解压文件,例如,待解压文件为A.Zip,解压后得到的文件夹名称可以为A,此时A文件夹和A.Zip压缩文件相互独立,即解压后多出了一个A文件夹。

待所有的待解压对象解压完成后,可以将所有的解压后的实体文件存储至指定存储队列,故在本发明的一些实施例中,在所述网盘服务端根据所述文件信息,调用解压应用程序编程接口对所述待解压文件进行解压操作,得到解压文件之后还包括:所述网盘服务端将所述文件数据和所述文件夹数据存储至指定存储队列。

需要说明的是,上述指定存储队列可以具体为Java List集合。

将解压后的文件数据和文件夹数据存储至队列中,可以便于后续目录结构关系的生成。

在将解压出的文件实体存储至队列后,可以对队列中的文件实体进行遍历,以得出各个实体之间的关系,即目录层级关系。

故在本发明的一些实施例中,在所述网盘服务端将所述文件数据和所述文件夹数据存储至指定存储队列之后还包括:所述网盘服务端对所述指定存储队列进行循环遍历,找出所述文件数据所在文件夹的预设的第一文件夹ID信息,找出所述文件夹数据对应的预设的第二文件夹ID信息,并将所述第一文件夹ID信息和所述第二文件ID信息存储至数据库;根据第一预设存储格式,将所述文件数据存储至数据库,以得出所述解压文件的目录结构关系。

需要说明的是,上述指定存储队列可以为一个已定义有先进先出策略的队列,该队列中可以存储解压出来的文件夹对象,以及待解压文件所在的文件夹对象。

上述循环遍历可以利用while循环具体实现,其过程可以具体为:将待解压文件所在的文件夹对象存储至队列中,循环遍历队列中的对象,可以首先遍历队首元素文件夹,即遍历该文件夹下的所有子文件。继而在子文件中寻找出解压出来的文件,进而判断当前子文件是否为文件夹,若是,则将该文件夹对象存储至队列,并将文件夹信息存储至数据库,以及该文件夹对应的ID信息存储至数据库,上述文件夹信息可以包括文件夹名称、保存路径以及所属文件夹等信息;若否,则表明当前子文件为文件,则可以将该文件存储至数据库,并将与该文件对应的ID信息一并存入数据库。利用遍历循环,找出各个文件实体之间的层级关系,进而得出解压后的文件的目录结构关系。

需要说明的是,上述第一文件夹ID信息可以是指所解压出来的文件对象所在的文件夹信息。上述第二文件夹ID信息可以是指所解压出来的文件夹对象的文件夹信息。

可以理解的是,可以预先建立文件夹对象和对应ID的对应关系,其具体可以通过定义一个Map对象,该Map对象的键-值对可以为文件夹对象-对应的ID。进一步地,可以将ID存储至Map对象中,而也可以从Map对象中读取到所需ID。

上述第一预设存储格式可以是指将文件数据存储至数据库时的格式,即预先设定文件数据的存储格式,例如,可以将文件数据存储至文件表,存储时将文件名称、文件描述、文件大小以及文件所对应的文件夹ID等信息存储至文件表里。

对于解压出来的文件夹数据,可以将文件夹存储至文件夹表。可以将文件夹名称、文件夹大小以及文件夹描述等信息一同存储至文件夹表。

为了更好地存储所解压出来的数据,可以预先对文件表以及文件夹表进行预先设计,则需要预先定义相应的文件表数据字典和文件夹表数据字典,即预先定义各个字段,例如id、nam、size…等字段。具体定义可以参见图3和图4,图3为本发明实施例所提供的文件表数据字典,图4为本发明实施例所提供的文件夹表数据字典。

为了更好地介绍目录结构关系的生成过程,下面将结合图5和图6,对压缩文件为Zip文件,编程实现语言为Java的目录结构关系生成过程进行相应介绍,图5为本发明实施例所提供的目录结构生成流程图的一种具体实施方式的流程示意图,图6为本发明实施例所提供的目录结构生成代码片段。

如图5所示,首先需要获取到待解压Zip文件zipFile以及其父文件夹rootFolder;继而进行Zip文件的解压操作,并将解压出来的所有文件对象存储至集合filelist中;然后预先定义Map<File,String>idMap,即将键-值对定义为为文件夹对象-对应ID,定义一个存储文件夹对象的队列Queue<File>queue,该队列遵循先进先出策略;queue.enqueue(rootFolder),rootFolder入队,idMap.put(rootFolder,rootId),rootFolder及其对应的ID,即将队首的文件夹存储至队列中,获取到相应文件夹对应的ID;进而判断queue.isEmpty()?,即判断当前队列是否为空,若为空时,则表示当前层级关系已读完,则结束进程,若不为空,则进入下一步;

接着进行数据读取,将读取到的ID存储至数据库,即File fr=queue.dequeue(),String id=idMap.get(fr);然后进行遍历循环,即For循环遍历fr所有子文件frsub,判断frsub是否为刚解压出来的文件;判断遍历是否结束,若遍历结束,则重新返回队列是否为空,若遍历不结束,则判断当前文件是否为刚解压出来的文件,即判断当前解压出来的文件是否已经存在,即fileList.contains(frsub)?;若不存在,则判断当前文件是文件还是文件夹,即frsub.isDirectory()?;当为文件时,则将文件信息存储至文件表,即saveFile(user,frsub,id);当为文件夹时,将文件夹信息存储至文件夹表,即queue.enqueue(frsub),Serializable,key=saveDir(user,frsub,id),idMap.put(frsub,key.toString())。

可以理解的是,上文只是对目录结构生成的流程进行大概说明,具体实现可以参见附图以及相应的代码段,在此不再赘述。

在将解压出来的文件信息以及文件夹信息存储至数据库后,可以得出各个文件以及文件夹之间的层级关系,即解压文件的目录层级关系,也即可以从数据库中读取到所需的目录结构关系。

故在本发明的一些实施例中,在所述根据第一预设存储格式,将所述文件数据存储至数据库,以得出所述解压文件的目录结构关系之后还包括:所述网盘服务端获取用户的文件列表查看指令;根据所述文件列表查看指令,从所述数据库中读取所述目录结构关系,以使所述用户查看到相应的文件列表。

可以理解的是,在接收到用户的文件列表查看指令后,即用户想要查看解压后文件的文件列表时,可以从数据库中读取到相应的目录结构关系,然后可以将对应的目录结构关系展示给用户。

本发明实施例所提供的压缩文件解压的方法,网盘服务端获取待解压文件的文件信息;上述网盘服务端根据上述文件信息,调用解压应用程序编程接口对上述待解压文件进行解压操作,得到解压文件。通过获得待解压文件的文件信息,上述待解压文件存储于上述网盘服务端上,上述网盘服务端可以通过调用解压应用程序编程接口来对待解压文件进行解压操作,以实现在网盘服务端上解压压缩文件。可见,该方法实现了在网盘服务端解压压缩文件的过程。

下面对本发明实施例提供的压缩文件解压装置进行介绍,下文描述的压缩文件解压装置与上文描述的压缩文件解压方法可相互对应参照。

图7为本发明实施例所提供的压缩文件解压装置的结构框图,参照图7压缩文件解压装置可以包括:

网盘服务端获取模块701,用于获取待解压文件的文件信息;

网盘服务端解压模块702,用于根据所述文件信息,调用解压应用程序编程接口对所述待解压文件进行解压操作,得到解压文件。

可选地,所述网盘服务端解压模块包括:

遍历判断单元,用于对所述待解压文件内所包含的待解压对象进行循环遍历,判断当前待解压对象的类别,所述待解压对象为文件或文件夹;

创建解压单元,用于当所述待解压对象为文件夹时根,创建文件夹,并对所述待解压对象进行解压操作,得出解压后的文件夹数据;

解压单元,用于当所述待解压对象为文件时,对所述待解压对象进行解压操作,得出解压后的文件数据。

可选地,还包括:

网盘服务端存储模块,用于将所述文件数据和所述文件夹数据存储至指定存储队列。

可选地,还包括:

网盘服务端寻找存储模块,用于对所述指定存储队列进行循环遍历,找出所述文件数据所在文件夹的预设的第一文件夹ID信息,找出所述文件夹数据对应的预设的第二文件夹ID信息,并将所述第一文件夹ID信息和所述第二文件ID信息存储至数据库;

网盘服务端第一存储模块,用于根据第一预设存储格式,将所述文件数据存储至数据库,以得出所述解压文件的目录结构关系。

本发明实施例所提供的压缩文件解压的装置,通过获得待解压文件的文件信息,上述待解压文件存储于上述网盘服务端上,上述网盘服务端可以通过调用解压应用程序编程接口来对待解压文件进行解压操作,以实现在网盘服务端上解压压缩文件。可见,该装置实现了在网盘服务端解压压缩文件的过程。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

以上对本发明所提供的压缩文件解压的方法以及装置进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

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