一种读取ini文件的方法及装置的制作方法

文档序号:6437309阅读:137来源:国知局
专利名称:一种读取ini文件的方法及装置的制作方法
技术领域
本发明涉及通信技术领域,尤其涉及一种读取ini文件的方法及装置。
背景技术
在windows系统中,用ini文件保存配置参数,常需要打开ini文件读取配置参数。现有技术中,windows提供的默认读取ini文件的方式,使用windows的api函数读取ini文件,在每次读取ini文件时都要打开ini文件,从头开始读起,查找字符串,关闭文件,这种在windows系统下读取ini文件的方式耗时较长,读取速度慢。

发明内容
本发明实施例提供了一种读取ini文件的方式及装置,用于当再次读取同一 ini 文件时,快速查找到本次需读取的字符串位置,从而快速读取ini文件。本发明实施例提供的读取ini文件的方法,包括退出所读取的初始配置ini文件时,记录所述初始配置ini文件当前读取的文件字符串,所述文件字符串包括=AppName字符串;当再次读取所述ini文件时,判断当前AppName字符串是否为所记录的AppName字符串;若是,则查找本次需读取的KeyName字符串;当查找到本次需读取的KeyName字符串时,从查找到的KeyName字符串处开始读取ini文件。本发明实施例提供的读取ini文件的装置,包括记录单元,用于退出所读取的初始配置ini文件时,记录所述初始配置ini文件当前读取的文件字符串,所述文件字符串包括=AppName字符串;判断单元,用于当再次读取所述ini文件时,判断当前AppName字符串是否为所记录的AppName字符串;查找单元,用于若当前AppName字符串为所记录的 AppName字符串,则查找本次需读取的KeyName字符串;读取单元,用于若当查找到本次需读取的KeyName字符串时,从查找到的KeyName字符串处开始读取ini文件。从以上技术方案可以看出,本发明实施例具有以下优点退出所读取的ini文件时,记录ini文件当前读取的文件字符串,该文件字符串包括AppName字符串,当再次读取该ini文件时,判断当前AppName字符串是否为所记录的AppName字符串,若是,则查找本次需读取的keyname字符串,从查找到的KeyName字符串处开始读取ini文件,由于利用 AppName字符串进行读取位置定位,如果AppName字符串相同,则能快速定位AppName字符串,进而快速定位keyname字符串而不需要全文搜索本次需读取的字符串,故从当前的 Appname查找比从ini文件开始查找快很多,从而快速读取ini文件。


图1为本发明实施例中读取ini文件的方法的一个实施例示意图;图2为本发明实施例中读取ini文件的方法的另一个实施例示意图;图3为本发明实施例中读取ini文件的装置的一个实施例示意图4为本发明实施例中读取ini文件的装置的另一个实施例示意图。
具体实施例方式本发明实施例提供了一种读取ini文件的方法及装置,用于快速定位本次需读取字符串在ini文件中的位置,从而快速读取ini文件。以下分别进行详细说明。请参阅图1,本发明实施例中读取ini文件的方法的一个实施例包括101、退出所读取的ini文件时,记录该ini文件当前读取的文件字符串,该文件字符串包括AppName字符串;在读取ini文件的过程中,退出时,记录当前读取的文件字符串,该文件字符串包括=AppName字符串。由于每次读取ini文件中相邻语句的AppName相同,或是当前AppName字符串的下个AppName字符串,因此只需记录当前AppName字符串的位置,下次读取该ini文件时,直接查找记录的AppName字符串,或者为其下一个AppName字符串,从而确定下次查找 AppName字符串的位置,缩短查找时间。为便于理解,首先介绍ini文件,ini文件由节、键、值组成,ini文件由若干个节 (Section)组成,每个Action由若干个键(Key)组成,每个Key可以赋相应的值。读取ini 文件实际上就是读取某个Action中相应的Key值。例如,下面为一段ini文件“ [DEV_0:YC_0]存储地址=100 (Al ID号为_1时自动生成新ID)点名=进线柜Gl相电压fe类型=A相电压IOKV系数=0.010000功能码=3寄存器号=0位长=16[DEV_0:YC_1]存储地址=101 (Al ID号为_1时自动生成新ID)点名=进线柜Gl相电压Ub类型=B相电压IOKV系数=0.010000功能码=3寄存器号=1位长=16[DEV_0:YC_2]存储地址=102 (Al ID号为_1时自动生成新ID)点名=进线柜Gl相电压Uc类型=C相电压IOKV系数=0.010000
功能码=3寄存器号=2位长=16”其中,[DEV_0 YC_0],[DEV_0 YC_1],[DEV_0 YC_2]为本实施例中的 AppName 字符
串ο102、当再次读取该ini文件时,判断当前AppName字符串是否为所记录的AppName 字符串;当再次读取该ini文件时,判断当前AppName字符串是否为所记录的AppName字符串。步骤101中记录了退出ini文件时记录的文件字符串中的AppName字符串,那么查找到与该记录的AppName字符串具有相同的AppName字符串,便可确认此查找到的 AppName字符串的位置为上次读取ini文件时退出的位置。103、若是,则查找本次需读取的KeyName字符串;若当前AppName字符串是所记录的AppName字符串,表明上次退出ini文件时读取的位置在当前AppName字符串之后。相邻的ini文件的读起AppName —般都相同,只是KeyName不同,所以当下次读起ini文件时能迅速找到appname的位置,再查找记录的 KeyName,从而读起参数。如上例,若AppName字符串[DEV_0 YC_1]便是所记录的AppName字符串,则表明本次所需读取的位置在以下此段ini文件中“ [DEV_0:YC_1]存储地址=101 (Al ID号为_1时自动生成新ID)点名=进线柜Gl相电压Ub类型=B相电压IOKV系数=0.010000功能码=3寄存器号=1位长=16”其中,“存储地址”,“点名”,“类型”,“系数”,“功能码”,“寄存器号”,“位长”为
KeyName,各个“=”之后为赋予KeyName的值,也就是本发明实施例所要读取的内容。104、当查找到本次需读取的KeyName字符串时,从查找到的KeyName字符串处开始读取ini文件。当查找到本次需读取的KeyName字符串时,从查找到的KeyName字符串处开始读取ini文件。本发明实施例中,退出所读取的ini文件时,记录ini文件当前读取的文件字符串,该文件字符串包括AppName字符串,当再次读取该ini文件时,判断当前AppName字符串是否为所记录的AppName字符串,若是,则查找本次需读取的KeyName字符串,当查找到本次需读取的KeyName字符串时,从查找到的KeyName字符串处开始读取ini文件,如果 AppName相同,则能快速定位AppName字符串,而不需要全文搜索本次需读取的文件字符串,故从当前的Appname字符串查找比从文件开始查找快很多。由于利用AppName字符串进行读取位置定位,而不需要全文搜索所记录的文件字符串,所以从当前的Appname查找比从ini文件开始查找快很多,从而快速读取ini文件。为便于理解,下面以另一实施例详细介绍本发明实施例中的读取ini文件的方法,请参阅图2,本发明实施例中的读取ini文件的方法的另一个实施例包括201、将ini文件整体读入内存;为便于读取ini文件,将ini文件整体读入内存。202、退出所读取的ini文件时,记录该ini文件当前读取的文件字符串,该文件字符串包括AppName字符串;在读取ini文件的过程中,退出时,记录ini文件当前读取的文件字符串,该文件字符串包括=AppName字符串,便于再次读取该ini文件时,查找前一次退出该文件时的位置。203、当再次读取ini文件时,判断当前AppName字符串是否为所记录的AppName 字符串;当再次读取该ini文件时,判断当前AppName字符串是否为所记录的AppName字符串。204、若当前AppName字符串不是所记录的AppName字符串,则从当前AppName字符串处向后查找本次需读取的AppName字符串;一般的,读取ini文件相邻语句的AppName字符串相同或下个AppName字符串, 如果当前AppName字符串不是所记录的AppName字符串,很大可能性所需查找的是下个 AppName字符串。需要说明的是,ini文件中有多个相同KeyName字符串,分别位于相同的或不同的 AppName字符串之后。如上例,每个AppName字符串之后均有KeyName字符串“存储地址”,“点名”, “类型”,“系数”,“功能码”,“寄存器号”,“位长”,如果上次读取的位置是AppName字符串 “ [DEV_0:YC_0] ”之后的KeyName字符串“类型”,而本次需要读取的位置为AppName字符串 “ [DEV_0:YC_1] ”之后的KeyName字符串“类型”,则本次打开ini文件后,判断当前AppName 字符串“ [DEV_0 YC_0]不是本次需要读取的AppName字符串“ [DEV_0 YC_1],,,则查找 KeyName字符串“类型”。205、当查找到本次需读取的AppName字符串后,查找本次需读取的KeyName字符串;当查找到本次需读取的AppName字符串后,查找本次需读取的再查找记录的 KeyName字符串,从而读取本次需要读取的参数内容。在所记录的AppName字符串直至下一个AppName字符串之间,查找本次需读取的 KeyName字符串。可从当前的AppName位置向后查找,一般在之后的200字节以内可查找到。206、当查找到本次需读取的KeyName字符串时,从查找到的KeyName字符串处开始读取ini文件。当查找到本次需读取的KeyName字符串时,从查找到的KeyName字符串处开始读取ini文件。
本发明实施例中,为便于读取ini文件,将ini文件整体读入内存,退出所读取的 ini文件时,记录该ini文件当前读取的AppName字符串的位置,再次读取该ini文件时, 如果当前AppName字符串,不是退出时记录的AppName字符串,则在当前AppName字符串位置之后查找本次需读取的AppName字符串,由于相邻的ini文件的读起AppName字符串一般都相同,只是KeyName字符串不同,因此,一般记录的AppName字符串位置就是本次要读取的AppName字符串的位置,即便查找不到相同的AppName字符串,也可从当前查找到的AppName字符串处向后查找,比从文件开始查找节约查找时间,从而快速再次读取ini文件。下面介绍本发明实施例中的读取ini文件的装置,请参阅图3,本发明实施例中的读取ini文件的装置的一个实施例包括记录单元301,用于退出所读取的ini文件时,记录ini文件当前读取的文件字符串,该文件字符串包括:AppName字符串(参见步骤101);判断单元302,用于当再次读取该ini文件时,判断当前AppName字符串是否为所记录的AppName字符串(参见步骤102);查找单元303,用于若当前AppName字符串是否为所记录的AppName字符串,则查找本次需读取的KeyName字符串(参见步骤103);读取文件304,用于若当查找到本次需读取的KeyName字符串时,从查找到的 KeyName字符串处开始读取ini文件(参见步骤104)。本实施例中的读取ini文件的装置中各单元实现功能的详细过程,请参阅前述图 1所示实施例中的相关内容,此处不再赘述。本发明实施例中,退出所读取的ini文件时,记录单元301记录ini文件当前读取的文件字符串,该文件字符串包括=AppName字符串,当再次读取该ini文件时,判断单元 302判断当前AppName字符串是否为所记录的AppName字符串,查找单元303用于若当前 AppName字符串是否为所记录的AppName字符串,则查找本次需读取的KeyName字符串,读取文件304若当查找到本次需读取的KeyName字符串时,从查找到的KeyName字符串处开始读取ini文件,由于利用AppName字符串进行读取位置定位,而不需要全文搜索本次需读取的文件字符串,因此可更迅速读取ini文件。为便于理解,下面以另一实施例详细描述本发明实施例中的读取ini文件的装置,请参阅图4,本发明实施例中的读取ini文件的装置的一个实施例包括记录单元401,用于退出所读取的ini文件时,记录该ini文件当前读取的文件字符串,该文件字符串包括:AppName字符串(参见步骤202);判断单元402,用于当再次读取所述ini文件时,判断当前AppName字符串是否为所记录的AppName字符串(203);查找单元403,用于若当前AppName字符串不是所记录的AppName字符串,则从当前AppName字符串处向后查找本次需读取的AppName字符串,还用于通过在所记录的 AppName字符串直至下一个AppName字符串之间,查找本次需读取的KeyName字符串的方式,查找本次需读取的KeyName字符串(参见步骤204、205);读取单元404,用于若当查找到本次需读取的KeyName字符串时,从查找到的 KeyName字符串处开始读取ini文件(参见步骤206)。
需要说明的是,本发明实施例中的读取ini文件的装置还可以进一步包括读入单元405,用于将ini文件整体读入内存(参见步骤201)。本发明实施例中,读入单元405将ini文件整体读入内存,便于读取ini文件,退出所读取的ini文件时,记录单元401记录该ini文件当前读取的文件字符串,该文件字符串包括AppName字符串,当再次读取该ini文件时,判断单元402判断当前AppName字符串是否为所记录的AppName字符串,若当前AppName字符串不是所记录的AppName字符串,则查找单元403查找本次需读取的KeyName字符串,通过在所记录的AppName字符串直至下一个AppName字符串之间,查找本次需读取的KeyName字符串的方式,查找本次需读取的KeyName字符串,若当查找到本次需读取的KeyName字符串时,读取文件404从查找到的KeyName字符串处开始读取ini文件。由于相邻的ini文件的读起AppName字符串一般都相同,只是KeyName字符串不同,因此,一般记录的AppName字符串位置就是本次要读取的AppName字符串的位置,即便查找不到相同的AppName字符串,也可从当前查找到的AppName字符串处向后查找,比从文件开始查找节约查找时间,从而快速再次读取ini文件。本领域技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。以上对本发明所提供的一种读取ini文件的方法及装置进行了详细介绍,对于本领域的技术人员,依据本发明实施例的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1.一种读取ini文件的方法,其特征在于,包括退出所读取的初始配置ini文件时,记录所述初始配置ini文件当前读取的文件字符串,所述文件字符串包括=AppName字符串;当再次读取所述ini文件时,判断当前AppName字符串是否为所记录的AppName字符串;若是,则查找本次需读取的KeyName字符串;当查找到本次需读取的KeyName字符串时,从查找到的KeyName字符串处开始读取ini 文件。
2.根据权利要求1所述的方法,其特征在于,所述当再次读取所述ini文件时,判断当前AppName字符串是否为所记录的AppName字符串之后包括若当前AppName字符串不是所记录的AppName字符串,则从当前AppName字符串处向后查找本次需读取的AppName字符串;当查找到本次需读取的AppName字符串后,执行所述查找本次需读取的KeyName字符串步骤。
3.根据权利要求2所述的方法,其特征在于,所述查找本次需读取的KeyName字符串包括在所记录的AppName字符串直至下一个AppName字符串之间,查找本次需读取的 KeyName字符串。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述退出所读取的初始配置 ini文件时,记录所述初始配置ini文件当前读取的文件字符串之前包括将ini文件整体读入内存。
5.一种读取ini文件的装置,其特征在于,包括记录单元,用于退出所读取的初始配置ini文件时,记录所述初始配置ini文件当前读取的文件字符串,所述文件字符串包括=AppName字符串;判断单元,用于当再次读取所述ini文件时,判断当前AppName字符串是否为所记录的 AppName字符串;查找单元,用于若当前AppName字符串为所记录的AppName字符串,则查找本次需读取的KeyName字符串;读取单元,用于若当查找到本次需读取的KeyName字符串时,从查找到的KeyName字符串处开始读取ini文件。
6.根据权利要求5所述的装置,其特征在于,所述查找单元,还用于若当前AppName字符串不是所记录的AppName字符串,则从当前 AppName字符串处向后查找本次需读取的AppName字符串。
7.根据权利要求6所述的装置,其特征在于,所述查找单元,用于通过在所记录的AppName字符串直至下一个AppName字符串之间, 查找本次需读取的KeyName字符串的方式,查找本次需读取的KeyName字符串。
8.根据权利要求5至7任一项所述的装置,其特征在于,所述装置还包括 读入单元,用于将ini文件整体读入内存。
全文摘要
本发明实施例公开了一种读取ini文件的方法及装置,用于迅速的定位再次读取ini文件时,本次需读取的位置,从而快速读取该ini文件。本发明实施例方法包括退出所读取的ini文件时,记录该ini文件当前读取的文件字符串,文件字符串包括AppName字符串,当再次读取该ini文件时,判断当前AppName字符串是否为所记录的AppName字符串,若是,则查找本次需读取的KeyName字符串,当查找到本次需读取的KeyName字符串时,从查找到的KeyName字符串处开始读取ini文件。
文档编号G06F17/30GK102508895SQ201110341758
公开日2012年6月20日 申请日期2011年11月2日 优先权日2011年11月2日
发明者勒长华 申请人:深圳市华力特电气股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1