遍历电子装置目录的方法及其装置 【技术领域】
本发明是有关于一种遍历(traverse)电子装置目录(directory)的方法及其装置。
背景技术
随着科技的发展,越来越多的电子装置具有存储元件,用以存储数据。一般来说,现在的电子装置使用Win32(TM)操作系统的目录结构(directorytree)来存储数据。而在该目录结构下,Win32(TM)下的两组指令FindFirstFile()以及FindNextFile()被用来遍历(traverse)所存储的数据,并同时随着遍历的过程,来浏览或搜寻所遍历的数据。
然而,目前已知的目录内容浏览方法大多以递归式(recursive)程序在遇到目录结构时以递归方式重复呼叫该段程序,而使得程序在执行时期消耗庞大的内存空间。递归程序最大的问题是在目录浏览的过程中所累积的内存空间因存储路径信息而无法释放。随着目录结构的深度越深,内存占用量就越多。
由上可知,需要一种遍历电子装置目录的方法,用以节省遍历时所需要的内存空间。
【发明内容】
本发明所要解决的技术问题在于提供一种遍历电子装置目录的方法及其装置,利用浏览状态的切换,用以节省遍历时所需要的内存空间。
为了实现上述目的,本发明一实施例中提出一种遍历电子装置目录的方法,包含下列步骤:
(1)当浏览状态为初次找数据状态时,判断目前目录是否具有第一笔数据。
(2)当目前目录具有第一笔数据时,以第一笔数据为目前数据,并切换浏览状态为数据分析状态。
(3)当浏览状态为该数据分析状态时,判断目前数据为文件(file)或目录(directory)。
(4)当目前数据为文件时,切换该浏览状态为找下一数据状态。
(5)当浏览状态为找下一数据状态时,判断目前数据是否具有下一笔数据。
(6)当目前数据具有下一笔数据时,以下一笔数据为目前数据,并切换浏览状态为数据分析状态。
为了实现上述目的,本发明另一实施例中提出一种遍历目录的电子装置,包含初次找数据状态机、数据分析状态机以及找下一数据状态机。初次找数据状态机包含第一数据判断器以及第一数据指派器。第一数据判断器用以判断目前目录是否具有第一笔数据。第一数据指派器用以在目前目录具有第一笔数据时,以第一笔数据为目前数据。数据分析状态机用以判断目前数据为文件(file)或目录(directory)。找下一数据状态机用以在该目前数据为文件时执行。该找下一数据状态机包含下一数据判断器、第二数据指派器以及第一状态切换器。下一数据判断器用以判断目前数据是否具有下一笔数据。第二数据指派器用以在目前数据具有下一笔数据时,以下一笔数据为目前数据。第一状态切换器用以在以下一笔数据为该目前数据后,切换到数据分析状态机。
由上述本发明实施例可知,应用本发明具有下列优点。本发明根据浏览状态、目前目录以及目前数据来遍历目录。因此,每执行完一个状态后,便可结束目前执行的指令,不需要把指令存储在内存中,而节省了内存空间。尤其在所遍历的目录越深层时,本发明所节省的内存空间越显着。
【附图说明】
为使本发明的上述和其它目的、特征、优点与实施例能更明显易懂,所附附图的详细说明如下:
图1是依照本发明一实施例的一种遍历电子装置目录的方法的流程图;
图2是本发明一遍历目录的电子装置的方块图;
图3是本发明的初次找数据状态机的方块图;
图4时本发明的找下一数据状态机的方块图;
图5是本发明的数据分析状态机的方块图;
图6是本发明的离开目录状态机的方块图。
【主要组件符号说明】
120:初次找数据状态 260:找下一数据状态机
140:数据分析状态 262:下一数据判断器
160:找下一数据状态 264:第二数据指派器
180:离开目录状态 266:第一状态切换器
220:初次找数据状态机 270:上一层目录地址堆栈
222:第一数据判断器 280:离开目录状态机
224:第一数据指派器 282:堆栈判断器
240:数据分析状态机 284:堆栈取出器
242:堆栈推入器 286:第三数据指派器
244:目录指派器 288:第二目录指派器
246:第二状态切换器 290:第三状态切换器
248:搜寻器 300:显示元件
【具体实施方式】
参照图1,其示出了依照本发明一实施例的一种遍历电子装置目录的方法的流程图。该遍历电子装置目录的方法借着浏览状态、目前目录以及目前数据,以遍历电子装置目录。该遍历电子装置目录的方法包含下列浏览状态(应了解到,在本实施例中所提及的步骤,除特别叙明其顺序者外,均可依实际需要调整其前后顺序,甚至可能同时或部分同时执行):
(1)初次找数据状态120。
(2)数据分析状态140。
(3)找下一数据状态160。
具体而言,当浏览状态为初次找数据状态120时,判断目前目录是否具有第一笔数据。当目前目录具有第一笔数据时,以第一笔数据为目前数据,并切换浏览状态为数据分析状态140。
当浏览状态为数据分析状态140时,判断目前数据为文件或目录。当目前数据为文件时,切换浏览状态为找下一数据状态160。
当浏览状态为找下一数据状态160时,判断目前数据是否具有一下一笔数据。当目前数据具有下一笔数据时,以下一笔数据为目前数据,并切换浏览状态为数据分析状态140。
如此一来,即可根据上述浏览状态的切换而遍历电子装置目录。此外,由于本实施例的遍历电子装置目录方法根据目前目录、目前数据以及浏览状态执行步骤,而不需要保留先前遍历时所执行的步骤指令。
另外,在图1中,当浏览状态为数据分析状态140时,可包含下列步骤:当目前数据为目录时,把目前目录的地址推入(push)至一上一层目录地址堆栈(stack)的顶端(top),作为一上一层目录地址。然后,在把目前目录的地址推入至上一层目录地址堆栈的顶端后,以目前数据为目前目录。并在以目前数据为目前目录后,切换浏览状态为初次找数据状态。因此,本实施例可在目前数据为目录时,对该目前数据的子数据做进一步遍历。
此外,在图1中,该遍历电子装置目录的方法还包含下列浏览状态:
(4)离开目录状态180。
具体而言,当目前目录不具有第一笔数据或目前数据不具有下一笔数据时,切换浏览状态为离开目录状态180。
当浏览状态为离开目录状态180时,判断上一层目录地址堆栈的顶端是否具有一上一层目录地址。当上一层目录地址堆栈的顶端具有上一层目录地址时,从上一层目录地址堆栈的顶端取出(pop)上一层目录地址。以目前目录为目前数据,并根据上一层目录地址,切换目前目录。在切换目前目录后,切换浏览状态为找下一数据状态160。
如此一来,本实施例可回到目前目录的上一层目录,而继续遍历上一层目录。
在图1中,当浏览状态为数据分析状态140时,可把目前数据与一欲搜寻数据条件做比较。如此一来,本实施例可使用于数据搜寻。
在图1中,当浏览状态为数据分析状态140时,可进一步在目前数据符合欲搜寻数据条件时,显示目前数据。因此,可将搜寻到的数据显示出来。
另外,在图1中,当浏览状态为数据分析状态140时,也可显示目前数据。因此,可将所遍历的数据显示出来,进而达到浏览目录的功能。
参照图2,其示出了依照本发明一实施例的一种遍历目录的电子装置地方块图。该遍历目录的电子装置可通过不同浏览状态的切换来遍历目录,以进一步达到浏览或搜寻目录的功能。该遍历目录的电子装置包含初次找数据状态机220、数据分析状态机240以及找下一数据状态机260。图3示出了初次找数据状态机220的方块图。同时参照图2与图3,初次找数据状态机220包含第一数据判断器222以及第一数据指派器224。第一数据判断器222用以判断一目前目录是否具有一第一笔数据。第一数据指派器224用以在目前目录具有第一笔数据时,以第一笔数据为目前数据。
参照图2,数据分析状态机240用以判断目前数据为文件或目录。找下一数据状态机260用以在目前数据为文件时执行。图4示出了找下一数据状态机260的方块图。同时参照图2以及图4,找下一数据状态机260包含下一数据判断器262、第二数据指派器264以及第一状态切换器266。下一数据判断器262用以判断目前数据是否具有一下一笔数据。第二数据指派器264用以在目前数据具有下一笔数据时,以下一笔数据为目前数据。第一状态切换器266用以在以下一笔数据为目前数据后,切换到数据分析状态机240。
图5示出了数据分析状态机240的方块图。同时参照图2以及图5,该数据分析状态机240可包含堆栈推入器242、目录指派器244以及第二状态切换器246。堆栈推入器242用以在目前数据为目录时,把目前目录的地址推入至一上一层目录地址堆栈270的顶端,作为一上一层目录地址。目录指派器244用以在把该目前目录的地址推入至该上一层目录地址堆栈的顶端后,以目前数据为目前目录。第二状态切换器246用以在以目前数据为目前目录后,切换到初次找数据状态机220。
此外,在图2中,该遍历目录的电子装置也可包含离开目录状态机280。离开目录状态机280用以在目前目录不具有第一笔数据或目前数据不具有下一笔数据时执行。图6示出了离开目录状态机280的方块图。同时参照图2以及图6,该离开目录状态机280包含堆栈判断器282、堆栈取出器284、第三数据指派器286、第二目录指派器288以及第三状态切换器290。堆栈判断器282用以判断上一层目录地址堆栈270的顶端是否具有上一层目录地址。堆栈取出器284用以在上一层目录地址堆栈270的顶端具有上一层目录地址时,从上一层目录地址堆栈270的顶端取出上一层目录地址。第三数据指派器286用以在取出上一层目录地址后,指派目前目录为目前数据。第二目录指派器288用以在指派目前目录为目前数据后,根据上一层目录地址,切换目前目录。第三状态切换器290用以在切换目前目录后,切换到找下一数据状态机。
另外,在图5中,数据分析状态机240可包含搜寻器248。搜寻器248用以把目前数据与一欲搜寻条件做比较。
此外,在图2中,该遍历目录的电子装置也可包含一显示元件300。该显示元件300用以显示目前数据。
由上述本发明实施例可知,应用本发明具有下列优点。本发明根据浏览状态、目前目录以及目前数据来遍历目录。因此,每执行完一个状态后,便可结束目前执行的指令,不需要把指令存储在内存中,而节省了内存空间。尤其在所遍历的目录越深层时,本发明所节省的内存空间越显着。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明做出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。