具体实施方式
下面将结合本实施例中的附图,对本实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供了一种文件属性的管理方法,如图1所示,该方法包括:
101:获取挂载设备所包括的所有文件的属性信息。
本步骤的执行主体为路由器、交换机等嵌入式设备,挂载设备为加载到嵌入式设备上的设备。例如:当前嵌入式设备为路由器,当有硬盘、优盘、Flash以及内存文件系统等加载到路由器上时,硬盘、优盘、Flash、内存文件系统等则为路由器的挂载设备。
文件的属性信息用于定义文件的不同性质,常见的文件属性有系统属性、隐藏属性、只读属性等。
在本步骤的具体实现过程中,当挂载设备加载到当前嵌入式设备时,当前嵌入式设备获取挂载设备中所有文件的属性信息。
示例性的,当优盘通过USB接口加载到嵌入式设备上时,嵌入式设备的文件系统便会遍历优盘内所有文件并获取每个文件的属性。
可选的,在加载挂载设备时,当前嵌入式设备还要获取挂载设备本身的属性信息,例如:挂载设备的配置信息等,并将挂载设备的属性信息自动解压至嵌入式设备的内存文件系统中。在当前嵌入式设备中,挂载设备本身的属性信息一般以根属性文件的形式存储,根属性文件只能读取,不能修改。
102:将获取的所有文件的属性信息存储至与所述挂载设备对应的文件属性文件中,所述文件属性文件保存在对应的所述挂载设备中。
在本步骤的具体实现过程中,通过文件属性文件,存储各个文件的属性信息。在文件属性文件中,各个文件的名称和其对应的属性可以以列表的形式呈现,如下表表1所示。
表1
文件名 |
属性 |
./ssh |
attr=h |
./tech |
attr=w |
./logging |
attr=r |
其中,r、w、h对应的文件属性分别为读方式、写方式和隐藏。
如果当前嵌入式设备同时加载了多个挂载设备,则在每个挂载设备中存储其对应的文件属性文件。如图2所示,为当前设备挂载了Flash、优盘等挂载设备时,文件属性文件的一种存储形式。其中,“\”表示当前嵌入式设备的根目录,在当前嵌入式设备的根目录下,分别存储了根属性文件、Flash对应的根目录(\flash)、优盘对应的根目录(\H),在Flash的根目录下存储了文件属性文件1,用于描述Flash中每个文件的属性;在优盘的根目录下存储了文件属性文件2,用于描述优盘中每个文件的属性。此外,图2中还分别示出了Flash和优盘的根目录下的其他子目录,如“\flash:\tech”和“\H:\tech”等。
这样,将同一个挂载设备中包括的所有文件的属性信息均存储在同一个文件中,便于对该挂载设备中所包含的文件的属性进行管理。
具体的,既可以将文件属性文件存储至挂载设备对应的根目录下,也可以存储至挂载设备对应的子目录下。例如:挂载设备对应的根目录为可移动磁盘H;一个子目录为H:\新建文件夹;则该挂载设备对应的文件属性文件既可以直接存储至可移动磁盘H下,也可以存储至H:\新建文件夹下。
需要说明的是,挂载设备对应的文件属性文件可以在挂载设备首次加载的时候创建,然后当卸载或格式化该挂载设备时,一并删除;然后下次加载挂载设备的时候需要重新创建。也可以在首次创建后,保存在挂载设备中,在挂载设备以后的加载过程中,更新该文件属性文件。
103:嵌入式设备的应用程序根据所述文件属性文件管理所述挂载设备中文件的属性。
在本步骤的具体实现过程中,嵌入设备的应用程序可通过查找文件属性文件获取挂载设备内的每个文件的属性,对文件的属性进行修改、设置等。
本发明实施例提供的文件属性的管理方法,当存在挂载设备时,获取挂载设备中所包括的所有文件的属性信息,并存储在位于挂载设备中的文件属性文件中,这样无论挂载设备采用了什么类型的文件系统,其文件系统本身是否支持某种属性,采用本发明实施例提供的方法,应用程序均可根据文件属性文件中得到文件的属性,对文件属性文件中文件的属性进行修改或设置,进而保证应用程序的正常运行。
例如:应用程序A运行在路由器中,Flash为路由器的挂载设备,该挂载设备的文件系统为msdos文件系统,支持文件隐藏属性。应用程序A将Flash作为默认存储路径,存储两个文件:文件1、文件2,文件1为内部调试文件,因此其属性设置为隐藏,文件2为统计信息文件,其文件属性不需要隐藏设置,可以设置为只读等其他方式。应用程序B运行在路由器中,负责向用户展示文件,当调用应用程序B时,应用程序B会遍历默认存储路径中所有文件,获取文件的属性,如果是隐藏属性文件,则跳过,如果为隐藏属性以外的其他属性,则将文件信息输出;因而用户只能看到文件1,无法看到文件2。
如果路由器挂载了硬盘,该硬盘的文件系统为ext3文件系统,应用程序A将默认存储路径改为硬盘。则由于ext3文件系统不支持文件隐藏属性,因此在现有技术中,应用程序A无法将硬盘下的文件1设置为隐藏,文件1与文件2都会被应用程序B展现给用户。而在本申请中,应用程序A可以在硬盘中查找到文件1的当前属性,并对文件1的属性进行修改;这样,当应用程序B遍历文件时,由于获取到文件1的属性为隐藏,则不会向用户展示文件1。
进一步的,为了加快获取文件属性的速度,本发明实施例中在当前嵌入式设备的文件系统中增加文件属性影子表,用于存储所有挂载设备对应的文件属性文件中的文件属性。具体的,分别将每个挂载设备的名称、每个挂载设备对应的文件属性文件的名称和文件属性文件中各个文件的属性分别添加到文件属性影子表的每个表项中。这样,嵌入式设备的应用程序可通过查询文件属性影子表的表项,管理挂载设备的文件属性,省去了应用程序分别到每个挂载设备中进行轮询查找的过程。
可选的,文件属性影子表项的实现形式如下表2所示:
表2
挂载设备 |
文件属性文件 |
文件属性文件中的文件名称 |
文件属性 |
优盘 |
文件1 |
./ssh |
attr=h |
优盘 |
文件1 |
./tech |
attr=r |
Flash |
文件2 |
./logging |
attr=w |
硬盘 |
文件3 |
./pic |
attr=r |
示例性的,由表2可以看出,名称为“优盘”的挂载设备,其对应的文件属性文件为“文件1”,文件1中存储了“./ssh”和“./tech”这两个文件的属性,分别为“attr=h”和“attr=r”。
下文提供了应用程序利用文件属性影子表对文件属性进行管理的具体实现方式。
一般而言,应用程序所在进程一般包括:文件属性获取接口、文件属性设置接口、文件删除接口、格式化设备接口、挂载设备接口和卸载设备接口等接口。
当应用程序需要获取某个文件的属性时,在文件属性获取接口中,以要获取属性的文件名为索引,在文件属性影子表的各个表项中进行查找,如果查找到,则将该文件的属性复制到获取接口的属性参数中。
当应用程序需要卸载某个挂载设备时,应用程序根据挂载设备的名称在文件属性影子表中进行查找,得到该挂载设备对应的所有表项,通过文件删除接口中从查找到的各个表项中删除该需要卸载的挂载设备对应的所有文件的属性。
当应用程序需要格式化某个挂载设备时,应用程序根据挂载设备的名称在文件属性影子表中进行查找,得到该挂载设备对应的所有表项,通过文件删除接口中从查找到的各个表项中删除该需要格式化的挂载设备对应的所有文件的属性。
当应用程序需要修改某个文件的属性时,通过文件属性设置接口从文件属性影子表中获取到该文件的当前属性并进行修改;同时还要修改位于挂载设备中的文件属性文件中该文件的属性。
当应用程序需要删除某个文件时,从文件属性影子表中找到该文件对应的表项,并通过文件删除接口从该表项中删除该文件的属性信息;同时还要从位于挂载设备中的文件属性文件中删除该文件。
作为本发明实施例提供的文件属性的管理方法的具体实现,本发明实施例还提供了一种文件属性的管理装置,如图3所示,所述装置包括:
获取模块201,用于获取挂载设备所包括的所有文件的属性信息。
存储模块202,用于将获取的所有文件的属性信息存储至与所述挂载设备对应的文件属性文件中,所述文件属性文件保存在对应的所述挂载设备中。
应用程序模块203,用于根据所述文件属性文件管理所述挂载设备中文件的属性。
进一步的,如图4所示,所述装置还包括:
添加模块301,用于创建文件属性影子表,所述文件属性影子表用于存储每个挂载设备对应的文件属性文件中的文件属性。
进一步的,所述添加模块301还用于,将挂载设备的名称、挂载设备对应的文件属性文件的名称和文件属性文件中各个文件的属性添加到所述文件属性影子表的表项中。
进一步的,所述应用程序模块203,还用于通过查询所述文件属性影子表的表项管理挂载设备的文件属性。
进一步的,所述获取模块201,还用于在启动挂载设备时,将所述挂载设备的属性信息自动解压至嵌入式设备的内存文件系统中。
本发明实施例提供的文件属性的管理装置,当存在挂载设备时,获取挂载设备中所包括的所有文件的属性信息,并存储在位于挂载设备中的文件属性文件中,这样无论挂载设备采用了什么类型的文件系统,其文件系统本身是否支持某种属性,采用本发明提供的装置,应用程序均可根据文件属性文件中得到文件的属性,对文件属性文件中文件的属性进行修改或设置,进而保证应用程序的正常运行。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。