对应用文件进行处理的方法及装置与流程

文档序号:11156824
对应用文件进行处理的方法及装置与制造工艺

本发明涉及计算机技术领域,具体涉及一种对应用文件进行处理的方法及装置。



背景技术:

在移动终端的应用程序(或称为:应用、软件)使用中,为了能够提高效率,经常会使用缓存技术。随着应用程序的不断增多,使用缓存的文件数量也会越来越多,这样就会导致应用体积越来越庞大,造成大量占用系统空间资源。

同时,在应用的配置文件出错的情况下,有可能会导致应用无法正常使用。例如,之前缓存了网页的访问地址A,但是在后期的应用升级过程中网页访问地址变更为B,此时缓存的配置文件并没有被有效的清理掉,就很有可能导致页面无法正常加载的问题。



技术实现要素:

鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的清理应用无效文件的方法及装置。

根据本发明实施例的一个方面,提供一种对应用文件进行处理的方法,包括:终端接收应用服务器发送的应用文件处理命令;所述终端解析所述应用文件处理命令,获知待处理文件标识以及处理操作类型;所述终端根据处理操作类型,执行对待处理文件的处理操作。

优选的,还包括:终端定期向应用服务器发送心跳包,所述心跳包携带终端IP地址、终端设备信息;应用服务器接收到所述心跳包,确定与终端保持通信,从而可向终端发送所述应用文件处理命令。

优选的,所述终端接收应用服务器发送的应用文件处理命令,包括:所述终端接收应用服务器发送的基于HTTP协议JSON格式的应用文件处理命令;所述终端解析所述应用文件处理命令,包括:所述终端通过FASTJSON方式解析所述应用文件处理命令。

优选的,还包括:在终端本地设置应用文件清理定时器;所述终端根据应用文件清理定时器,定时读取本地缓存的应用文件,并判断所述缓存的应用文件所占的存储空间大小是否大于预置的存储空间清理阈值,若是,删除所述缓存的应用文件。

优选的,所述定时读取缓存的应用文件,包括:使用Java的JDK提供的文件读取API,通过File类定时读取本地缓存的应用文件。

根据本发明的另一个实施例,提供一种对应用文件进行处理的装置,包括:处理命令接收单元,用于接收应用服务器发送的应用文件处理命令;处理命令解析单元,用于解析所述应用文件处理命令,获知待处理文件标识以及处理操作类型;处理操作执行单元,用于根据处理操作类型,执行对待处理文件的处理操作。

优选的,还包括:心跳包发送单元,用于定期向应用服务器发送心跳包,所述心跳包携带终端IP地址、终端设备信息。

优选的,所述处理命令接收单元具体用于:所述终端接收应用服务器发送的基于HTTP协议JSON格式的应用文件处理命令;所述处理命令解析单元具体用于:通过FASTJSON方式解析所述应用文件处理命令。

优选的,还包括:本地定时清理单元,用于在终端本地设置应用文件清理定时器,以及,根据应用文件清理定时器,定时读取本地缓存的应用文件,并判断所述缓存的应用文件所占的存储空间大小是否大于预置的存储空间清理阈值,若是,删除所述缓存的应用文件。

优选的,所述本地定时清理单元具体用于:使用Java的JDK提供的文件读取API,通过File类定时读取本地缓存的应用文件。

可见,通过本发明提供的应用文件处理方法,通过服务器下发应用文件处理命令的方式,实现垃圾动态清理的目的,例如,针对应用程序的配置文件进行更新或升级过程中,对于涉及版本或升级的过期文件进行下发删除命令,从而减少这些无效文件对终端缓存空间的占用,减轻对磁盘占用的开销,也能够有效的避免因为后期升级等问题导致系统配置失效从而导致软件不可用的问题。

除了上述通过服务器下发应用文件处理命令的方式对终端无效文件(特别是无效的配置文件)进行处理的方式外,还可结合终端本地对无效文件(特别是无效的运行文件)的清理方式,从而可进一步有效的控制软件本身的磁盘占用。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1示出了根据本发明的清理应用无效文件的方法流程图;

图2示出了根据本发明一个实施例的清理应用无效文件的方法中根据本地定时器删除缓存文件的流程图;

图3示出了根据本发明的清理应用无效文件的装置结构示意图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

如前所述的,针对应用文件过期或无效的情况,如果还仍然缓存这些应用文件,会造成对终端存储空间的浪费,严重时还会影响终端响应速度。对此,本发明实施例提供一种对应用文件进行处理的方法,通过服务器控制下发处理命令,指示终端进行应用文件的处理。除此之外,在优选方式中,还结合终端本地清理应用文件的方式,及时清理掉无效应用文件。

参见图1,为本发明提供的一种对应用文件进行处理的方法。

S101:终端接收应用服务器发送的应用文件处理命令。

应用文件处理命令,是指对应用文件进行处理的指令,例如对文件进行删除等操作的指令。应用文件,是指应用程序的相关文件,例如,应用程序的配置文件,应用程序的运行文件,等等,其中,配置文件一般是与应用程序的版本信息、升级信息或用户信息相关的文件,而应用程序的运行文件是指应用程序在运行过程中调用信息相关的文件。

在实际操作中,应用服务器向终端发送应用文件处理命令的时机不限,例如,可以定期下发应用文件处理命令,或在技术维护人员根据需要下发应用文件处理命令,或者在对应用进行版本更新或者删除旧版本时下发应用文件处理命令,或者终端上报某个/些应用文件无效时下发应用文件处理命令。该应用文件处理命令中包括指示终端进行处理的文件标识(例如文件名称)及处理操作类型。

为了确保终端接收到应用服务器下发的应用文件处理命令,需要维持终端与应用服务器之间的通信连接。例如,可以通过终端定期向应用服务器发送心跳包的方式维持二者之间的通信连接。具体的,终端定期向应用服务器发送心跳包,心跳包携带终端IP地址、终端设备信息;应用服务器接收到心跳包,确定与终端保持通信,从而可向终端发送应用文件处理命令。

可见,应用服务器和终端通信过程中如果希望能够实施通过服务器下方控制命令,此时需要维系一个和服务器的心跳包。心跳包主要是终端定期向服务器发送一个空的命令保证终端和服务器的连接不会因为超时而断开。首先,因为终端和服务器通信中过程中,服务端如果长时间没有收到终端的消息,服务端为了释放该终端占用的资源会断开与终端的连接。如果服务器和终端断开了连接,那么以后终端就无法和服务器通信,如果想要继续通信,终端必须重新建立连接,但是建立连接的这个过程是非常耗时的,为了解决这个问题终端可以通过发送心跳包解决。其次,终端定期发送心跳包(心跳包内容携带客户端的一些基本信息,比如终端mac地址,设备相关信息,手机号等,主要目的就是和服务器进行一次通信操作),服务器发现终端定期有和自己通信,服务器会认为终端一直需要服务,此时服务器不会断开与终端的连接。另外,有了心跳包的传输,就能够很好的保障终端和服务器的连接不断开。

S102:终端解析应用文件处理命令,获知待处理文件标识以及处理操作类型。

待处理文件标识可以是文件名称或者文件唯一标识码或者其他表示文件的信息,处理操作类型指示对待处理文件的处理操作方式,例如,处理操作包括删除操作、更新操作(以新版本文件替换旧版本文件),等。

具体的,服务器基于HTPP协议向终端发送应用文件处理命令,例如,终端接收应用服务器发送的基于HTTP协议JSON格式的应用文件处理命令;终端解析应用文件处理命令的方式是:通过FASTJSON方式解析应用文件处理命令。其中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于ECMAScript的一个子集,JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。FASTJSON是Java语言编写的JSON处理器,与JSON相比,FASTJSO具有处理速度更快的优点。

例如,应用文件处理命令的结构如下:

{

"fileName":"myConfig.xml",

"fileOperation":"delete",

}

其中:

fileName:表示需要被删除掉文件名称,本示例中需要被删除掉文件的名称是myConfig.xml。

fileOperation:是需要对这个文件进行的操作,本操作的具体内容是delete表示需要对这个文件进行删除操作。

如上面的例子,应用文件处理命令是通过HTTP协议将JSON格式的数据传递过来,终端接收到服务器传递过来的JSON数据后,会使用通用的FASTJSON方式对该JSON格式进行解析操作,解析出需要删除的文件名称。例如,上面示例中解析完成后的文件名称是myConfig.xml。

S103:终端根据处理操作类型,执行对待处理文件的处理操作。

终端解析应用文件处理命令之后,执行对待处理文件的处理操作。具体的,可以使用JDK提供的File类中的各种方法执行具体的处理操作。其中,JDK是Java语言的软件开发工具包,主要用于移动设备、嵌入式设备上的Java应用程序。JDK是整个Java开发的核心,它包含了Java的运行环境,Java工具和Java基础的类库。通过调用JDK中的File类(文件类)的各种方法,可以实现对文件的处理操作。例如,对于删除操作,则可以使用JDK提供的File类中的删除方法(Delete函数)对文件执行删除操作处理,Delete函数是file中的一个删除函数,其主要功能是将文件从磁盘上删除掉。

通过本发明提供的应用文件处理方法,通过服务器下发应用文件处理命令的方式,实现垃圾动态清理的目的,例如,针对应用程序的配置文件进行更新或升级过程中,对于涉及版本或升级的过期文件进行下发删除命令,从而减少这些无效文件对终端缓存空间的占用,减轻对磁盘占用的开销,也能够有效的避免因为后期升级等问题导致系统配置失效从而导致软件不可用的问题。

除了上述通过服务器下发应用文件处理命令的方式对终端无效文件(特别是无效的配置文件)进行处理的方式外,还可结合终端本地对无效文件(特别是无效的运行文件)的清理方式,从而可进一步有效的控制软件本身的磁盘占用。

参见图2,出了根据本发明一个实施例的清理应用无效文件的方法中根据本地定时器删除缓存文件的流程图,包括如下步骤:

S201:在终端本地设置应用文件清理定时器;

S202:根据应用文件清理定时器,定时读取缓存的应用文件;

S203:确定缓存的应用文件所占的存储空间大小大于预置的存储空间清理阈值;

S204:删除缓存的应用文件。

下面以Android系统的终端为例,针对上述四个步骤进一步详细介绍。

一、关于步骤S201“设置应用文件清理定时器”

本地定时器配置:

可以采用Android提供的一个专用定时器AlarmManager,在系统休眠状态下,如果定时器超时了,Android会自动唤醒系统来触发定时任务。AlarmManager具有唤醒CPU的功能,可以保证每次需要执行特定任务时CPU都能正常工作,或者说当CPU处于休眠时注册的闹钟会被保留(可以唤醒CPU)。

本发明实施例子中以通过AlarmManger来设定定时器为例子。

AlarmManager的使用分为如下两个步骤:

(1)获取定时器AlarmManager

AlarmManager是Android系统提供的一个定时服务,需要使用定时服务的时候首先得获取到Android系统提供的这个服务。具体获取方法如下所示:

AlarmManager alarmManager=

(AlarmManager)getSystemService(ALARM_SERVICE);

直接调用getSystemService这个方法,就能够获取到定时器AlarmManager的实例。其中getSystemService是Android系统提供的一个专门用于获取系统服务的接口。

(2)设置重复定时器

AlarmManager中有一个专门用于设置重复定时器的函数setRepeating,这个函数的主要功能是设置定时任务,这个定时任务一旦到达后,系统会重新开启新的定时任务,新的定时时间和老的定时时间相同。

这个函数的使用如下所示:

setRepeating(int type,long startTime,long intervalTime,PendingIntent pi):

本发明实施例子的例子中,因为要定期对无效文件进行清理处理,所以优选使用setRepeating定时器来设定定时器的。setRepeating函数设置的是一个周期性的定时器,周期性的定时器能够确保任务被不断的定时执行。

二、关于步骤202“根据应用文件清理定时器,定时读取缓存的应用文件”

例如,可以使用Java的JDK提供的文件读取API,通过File类定时读取缓存的应用文件。具体的,读取文件使用的Java的JDK提供的一套文件读取的API,使用File类来对文件进行读取。File类读取文件的方式如下:File(文件路径),将文件的路径传递到File的构造函数中,这样系统就会返回该文件的实例file。后续可以通过文件实例file对文件进行信息的获取或者文件的相关操作。

三、关于步骤203“判断缓存的应用文件所占的存储空间大小是否大于预置的存储空间清理阈值”

仍以上面“Java的JDK提供的文件读取API”的方式,在读取到文件的文件实例之后,可以调用其中的length方法来获取文件的大小。其中length方法这个函数的主要功能是返回当前文件的大小信息。由此,就可以通过length函数获取到了当前文件的大小了。

预先需要设置一个存储空间清理阈值(文件阈值),是为了将大文件进行删除,如果缓存的文件比较小,此时可以认为没有必要对其进行删除,因为小缓存文件对系统磁盘的开销比较小,影响可以忽略不计。如果文件过大就会对系统产生一定的影响了。例如,本例子中阈值设置为50M,在实际使用过程中该值可以根据具体需求来进行设置大小,将读取到文件的大小和阈值50M进行大小对比。

四、关于步骤S204“删除缓存的应用文件”

仍如上面的例子,如果文件大小比阈值50M大,此时对文件进行删除操作。删除文件的方法是通过调用file中的delete函数来对文件进行删除,Delete函数是file中的一个删除函数,其主要功能是将文件从磁盘上删除掉。如果缓存文件没有超过阈值大小,此时不做任何操作,即对于小文件不会对其进行删除操作。

与上述方法实施例相对应,本发明还提供一种对应用文件进行处理的装置。参见图3,示出了本发明对应用文件进行处理的装置结构示意图,该装置包括:

处理命令接收单元301,用于接收应用服务器发送的应用文件处理命令;

处理命令解析单元302,用于解析所述应用文件处理命令,获知待处理文件标识以及处理操作类型;

处理操作执行单元303,用于根据处理操作类型,执行对待处理文件的处理操作。

待处理文件标识可以是文件名称或者文件唯一标识码或者其他表示文件的信息,处理操作类型指示对待处理文件的处理操作方式,例如,处理操作包括删除操作、更新操作(以新版本文件替换旧版本文件),等。

在实际操作中,应用服务器向终端发送应用文件处理命令的时机不限,例如,可以定期下发应用文件处理命令,或在技术维护人员根据需要下发应用文件处理命令,或者在对应用进行版本更新或者删除旧版本时下发应用文件处理命令,或者终端上报某个/些应用文件无效时下发应用文件处理命令。该应用文件处理命令中包括指示终端进行处理的文件名称及处理操作类型。

为了确保终端接收到应用服务器下发的应用文件处理命令,需要维持终端与应用服务器之间的通信连接。例如,可以通过终端定期向应用服务器发送心跳包的方式维持二者之间的通信连接。具体的,终端定期向应用服务器发送心跳包,心跳包携带终端IP地址、终端设备信息;应用服务器接收到心跳包,确定与终端保持通信,从而可向终端发送应用文件处理命令。

优选的,该装置还包括:心跳包发送单元304,用于定期向应用服务器发送心跳包,所述心跳包携带终端IP地址、终端设备信息。

可见,应用服务器和终端通信过程中如果希望能够实施通过服务器下方控制命令,此时需要维系一个和服务器的心跳包。心跳包主要是终端定期向服务器发送一个空的命令保证终端和服务器的连接不会因为超时而断开。首先,因为终端和服务器通信中过程中,服务端如果长时间没有收到终端的消息,服务端为了释放该终端占用的资源会断开与终端的连接。如果服务器和终端断开了连接,那么以后终端就无法和服务器通信,如果想要继续通信,终端必须重新建立连接,但是建立连接的这个过程是非常耗时的,为了解决这个问题终端可以通过发送心跳包解决。其次,终端定期发送心跳包(心跳包内容携带客户端的一些基本信息,比如终端mac地址,设备相关信息,手机号等,主要目的就是和服务器进行一次通信操作),服务器发现终端定期有和自己通信,服务器会认为终端一直需要服务,此时服务器不会断开与终端的连接。另外,有了心跳包的传输,就能够很好的保障终端和服务器的连接不断开。

优选的,所述处理命令接收单元301具体用于:所述终端接收应用服务器发送的基于HTTP协议JSON格式的应用文件处理命令;所述处理命令解析单元302具体用于:通过FASTJSON方式解析所述应用文件处理命令。

待处理文件标识可以是文件名称或者文件唯一标识码或者其他表示文件的信息,处理操作类型指示对待处理文件的处理操作方式,例如,处理操作包括删除操作、更新操作(以新版本文件替换旧版本文件),等。

具体的,服务器基于HTPP协议向终端发送应用文件处理命令,例如,终端接收应用服务器发送的基于HTTP协议JSON格式的应用文件处理命令;终端解析应用文件处理命令的方式是:通过FASTJSON方式解析应用文件处理命令。其中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于ECMAScript的一个子集,JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。FASTJSON是Java语言编写的JSON处理器,与JSON相比,FASTJSO具有处理速度更快的优点。

例如,应用文件处理命令的结构如下:

{

"fileName":"myConfig.xml",

"fileOperation":"delete",

}

其中:

fileName:表示需要被删除掉文件名称,本示例中需要被删除掉文件的名称是myConfig.xml。

fileOperation:是需要对这个文件进行的操作,本操作的具体内容是delete表示需要对这个文件进行删除操作。

如上面的例子,应用文件处理命令是通过HTTP协议将JSON格式的数据传递过来,终端接收到服务器传递过来的JSON数据后,会使用通用的FASTJSON方式对该JSON格式进行解析操作,解析出需要删除的文件名称。例如,上面示例中解析完成后的文件名称是myConfig.xml。

除了上述通过服务器下发应用文件处理命令的方式对终端无效文件(特别是无效的配置文件)进行处理的方式外,还可结合终端本地对无效文件(特别是无效的运行文件)的清理方式,从而可进一步有效的控制软件本身的磁盘占用。

优选的,该装置还包括:本地定时清理单元305,用于在终端本地设置应用文件清理定时器,以及,根据应用文件清理定时器,定时读取本地缓存的应用文件,并判断所述缓存的应用文件所占的存储空间大小是否大于预置的存储空间清理阈值,若是,删除所述缓存的应用文件。优选的,所述本地定时清理单元305具体用于:使用Java的JDK提供的文件读取API,通过File类定时读取本地缓存的应用文件。

下面以Android系统的终端为例,针对上述本地定时清理单元305进一步详细介绍。

一、关于“设置应用文件清理定时器”

本地定时器配置:

可以采用Android提供的一个专用定时器AlarmManager,在系统休眠状态下,如果定时器超时了,Android会自动唤醒系统来触发定时任务。AlarmManager具有唤醒CPU的功能,可以保证每次需要执行特定任务时CPU都能正常工作,或者说当CPU处于休眠时注册的闹钟会被保留(可以唤醒CPU)。

本发明实施例子中以通过AlarmManger来设定定时器为例子。

AlarmManager的使用分为如下两个步骤:

(1)获取定时器AlarmManager

AlarmManager是Android系统提供的一个定时服务,需要使用定时服务的时候首先得获取到Android系统提供的这个服务。具体获取方法如下所示:

AlarmManager alarmManager=

(AlarmManager)getSystemService(ALARM_SERVICE);

直接调用getSystemService这个方法,就能够获取到定时器AlarmManager的实例。其中getSystemService是Android系统提供的一个专门用于获取系统服务的接口。

(2)设置重复定时器

AlarmManager中有一个专门用于设置重复定时器的函数setRepeating,这个函数的主要功能是设置定时任务,这个定时任务一旦到达后,系统会重新开启新的定时任务,新的定时时间和老的定时时间相同。

这个函数的使用如下所示:

setRepeating(int type,long startTime,long intervalTime,PendingIntent pi):

本发明实施例子的例子中,因为要定期对无效文件进行清理处理,所以优选使用setRepeating定时器来设定定时器的。setRepeating函数设置的是一个周期性的定时器,周期性的定时器能够确保任务被不断的定时执行。

二、关于“根据应用文件清理定时器,定时读取缓存的应用文件”

例如,可以使用Java的JDK提供的文件读取API,通过File类定时读取缓存的应用文件。具体的,读取文件使用的Java的JDK提供的一套文件读取的API,使用File类来对文件进行读取。File类读取文件的方式如下:File(文件路径),将文件的路径传递到File的构造函数中,这样系统就会返回该文件的实例file。后续可以通过文件实例file对文件进行信息的获取或者文件的相关操作。

三、关于“判断缓存的应用文件所占的存储空间大小是否大于预置的存储空间清理阈值”

仍以上面“Java的JDK提供的文件读取API”的方式,在读取到文件的文件实例之后,可以调用其中的length方法来获取文件的大小。其中length方法这个函数的主要功能是返回当前文件的大小信息。由此,就可以通过length函数获取到了当前文件的大小了。

预先需要设置一个存储空间清理阈值(文件阈值),是为了将大文件进行删除,如果缓存的文件比较小,此时可以认为没有必要对其进行删除,因为小缓存文件对系统磁盘的开销比较小,影响可以忽略不计。如果文件过大就会对系统产生一定的影响了。例如,本例子中阈值设置为50M,在实际使用过程中该值可以根据具体需求来进行设置大小,将读取到文件的大小和阈值50M进行大小对比。

四、关于“删除缓存的应用文件”

仍如上面的例子,如果文件大小比阈值50M大,此时对文件进行删除操作。删除文件的方法是通过调用file中的delete函数来对文件进行删除,Delete函数是file中的一个删除函数,其主要功能是将文件从磁盘上删除掉。如果缓存文件没有超过阈值大小,此时不做任何操作,即对于小文件不会对其进行删除操作。

在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。

本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的用户变身控制的系统中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。

应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

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