基于FAT系统的快速打开文件的方法 【技术领域】
本发明属于计算机软件操作系统领域,具体是指微软MS-DOS操作系统中基于FAT系统快速打开文件的方法。
【背景技术】
FAT文件系统是最早的微软MS-DOS操作系统采用的文件,FAT文件系统包括FAT16和FAT32两个版本。
FAT文件系统的目录结构是一颗有向的从根到叶地树,存在存储器中(磁盘、FLASH等)。每次打开一个文件都需要从存储器(硬盘、FLASH等)中先查找文件所在盘的信息指针、再查找文件所在目录的首簇号、再根据首簇号查找文件所在目录的簇号、再查找文件FDT的项号,最后才能获取到文件的信息。这个算法太复杂当文件个数越多打开文件越慢,而且存储器的读取速度慢,所以每次打开文件需要花很长时间在读存储器。如果A程序需要实时从存储器中读写数据时,B程序去打开另一文件(如果这个文件的路径很长而且文件个数很多)时花了太长时间,A程序就不能实时读写数据。存储器的访问较慢,所以当文件数据比较多时,打开文件需要较长的时间。
【发明内容】
本发明所要解决的技术问题在于提供一种基于FAT系统的快速打开文件的方法。
本发明采用以下技术方案解决上述技术问题:
基于FAT系统的快速打开文件的方法,包括如下步骤:
步骤100:开始;
步骤101:查找空闲的打开文件登记项;
步骤102:判断是否找到?是,转入步骤103;否,转入步骤114;
步骤103:判断是否以只读方式打开?是,转入步骤104;否,转入步骤110;
步骤104:通过文件名和路径从数据库中获取该文件所在盘的信息指针,所在目录的簇号、FDT的项号;
步骤105:判断目录是否存在?是,转入步骤106;否,转入步骤114;
步骤106:判断FDT登记项是否存在?是,转入步骤107,否,转入步骤114;
步骤107:判断是否是目录?是,转入步骤108,否,转入步骤114:
步骤108:获取文件信息;
步骤109:修改打开文件信息登记项,转入步骤115;
步骤110:调用FAT文件系统的FILEOPEN函数;
步骤111:判断文件是否打开成功?是,转入步骤112;否,转入步骤114;
步骤112:判断数据库是否存在该文件?是,转入步骤115;否,转入步骤113;
步骤113:把该文件的信息添加到数据库中,转入步骤115;
步骤114;返回“不能打开文件”;
步骤115:返回相应的文件句柄。
本发明的优点在于:系统初始化时搜索所有磁盘下所有文件和文件夹,并且把它们的关键信息(文件名(包括文件夹名)、文件所在盘的信息指针、文件所在目录的簇号、文件FDT的项号)存放到数据库中。打开文件时直接从数据库中获取文件的关键信息再从存储器获取文件的信息。数据库是存放在内存中,内存访问速度快。
【附图说明】
下面参照附图结合实施例对本发明作进一步的描述。
图1是本发明工作流程示意图。
【具体实施方式】
本发明是通过存储器驱动,搜索所有磁盘下所有文件和文件夹,并且把它们的文件名(包括文件夹名)、文件所在盘的信息指针、文件所在目录的簇号、文件FDT的项号添加到数据库中。打开文件时直接从数据库中获取文件的关键信息再从存储器获取文件的信息。具体可参阅图1,详细工作步骤如下:
步骤100:开始;
步骤101:查找空闲的打开文件登记项;
步骤102:判断是否找到?是,转入步骤103;否,转入步骤114;
步骤103:判断是否以只读方式打开?是,转入步骤104;否,转入步骤110;
步骤104:通过文件名和路径从数据库中获取该文件所在盘的信息指针,所在目录的簇号、FDT的项号;
步骤105:判断目录是否存在?是,转入步骤106;否,转入步骤114;
步骤106:判断FDT登记项是否存在?是,转入步骤107,否,转入步骤114;
步骤107:判断是否是目录?是,转入步骤108,否,转入步骤114:
步骤108:获取文件信息;
步骤109:修改打开文件信息登记项,转入步骤115;
步骤110:调用FAT文件系统的FILEOPEN函数;
步骤111:判断文件是否打开成功?是,转入步骤112;否,转入步骤114;
步骤112:判断数据库是否存在该文件?是,转入步骤115;否,转入步骤113;
步骤113:把该文件的信息添加到数据库中,转入步骤115;
步骤114;返回“不能打开文件”;
步骤115:返回相应的文件句柄。
本发明中系统初始化时搜索所有磁盘下所有文件和文件夹,并且把它们的关键信息(文件名(包括文件夹名)、文件所在盘的信息指针、文件所在目录的簇号、文件FDT的项号)存放到数据库中。打开文件时直接从数据库中获取文件的关键信息再从存储器获取文件的信息。数据库是存放在内存中,内存访问速度快。