FAT32根据文件目录项判断文件名大小写

1 篇文章 0 订阅
1 篇文章 0 订阅


      FAT32根据文件目录项判断文件名大小写的方法(仅限8.3命名规则):

      文件目录项0CH字节的值:
      1. 此值为18H时,文件名和扩展名都小写。
      2. 此值为10H时,文件名大写而扩展名小写。
      3. 此值为08H时,文件名小写而扩展名大写。
      4. 此值为00H时,文件名和扩展名都大写。

      如下图:

     

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
WimTool是基于WIMGAPI SDK开发的Win32程序 一、基本介绍 1、WimTool并不是Imagex的GUI,可以脱离Imagex而独立使用。 2、WimTool能提供普通用户对WIM格式文件最常用的处理功能,如制作映像文件、挂载映像、解开Wim映像到硬盘的目录和向现存的Wim文件加入新的映像卷等。 3、在WimTool中,对Wim文件进行操作处理时,界面元素给用户提供了相当的显示信息,对Wim文件最常见的处理出现失败时,WimTool会提供失败的说明。 4、WimTool界面采用分页式设计,每页都提供了必要的操作说明、选要求和注意事。初次使用的用户请先阅读每页的操作说明。 二、运行环境 Win2K/WinXP/Win2K3/Vista/Win 7及它们相应的PE系统,在上述系统中安装WimFltr或WimMount组件后可以使用全部功能, 如果没有安装WimFltr或WimMount组件,只需一个位于同目录中的WIMGAPI.DLL文件也可使用大部分常用功能。 三、功能简介 WimTool集成了处理Wim文件的以下常用功能。 1、支持制作不同压缩类型的映像文件。在制作新的映像文件时,用户可给新的映卷指定映卷名称和映卷描述,并加上启动标记,同时用户可以在WimTool中指定压缩类型。 2、支持向现有的映像文件添加新的映卷,并可指定新映卷的名称和描述,并加上启动标记。 向现有映像文件添加新的映像卷时,WimTool会自动检测原映像文件的压缩类型,并使新加入的映像卷与之匹配。 3、支持挂载和卸载Wim文件。用WimTool挂载Wim文件时,用户可以选择指定的映像文件和挂载目录,同时也可指定挂载方式(是否可或只读)。 4、支持向硬盘解开(应用)Wim文件中指定的映像卷,包括解开分割包。WimTool解开Wim文件时会自动检测用户指定的Wim是否属分割包,并将其它分包系列也解开到指定目录。 5、支持将单一的大体积Wim文件按指定大小分割,分包文件既支持WimTool解开也支持Imagex解开;也支持将一组分割包合并成单一的Wim映像文件。 6、支持将某Wim文件中存在的映像卷导入到另一个Wim文件中。导入映像卷的目标Wim文件既支持Imagex操作,也支持WimTool操作,如挂载、解开等。 7、支持从已有的Wim文件中删除已有的映像卷条目。 8、支持查看Wim文件基本属性和详细信息,如映卷名称、映卷描述、压缩类型、映像卷数目、是否属分割包等。 9、支持列出系统所有挂载的Wim映像及其挂载目录、挂载方式等。 10.支持修改现有的Wim映像文件中的某个映卷的名称和描述,并加上启动标记。 11.支持 Mount 、MountRW 、UnMount 、Apply 、 Capture 、ReMount 和 Append 七命令行参数及它们的常用选。 12.支持WIM映像文件与WimTool程序直接关联,并可创建右键菜单,方便挂载或打开WIM映像文件。 13.支持列出映像内的文件目录,这个功能相当于ImageX的/DIR参数,可以在PE系统中使用。 14.支持通过配置文件定义捕获映像或解开映像的规则。WimTool的配置文件与ImageX的兼容。在WimTool内置了一份默认的配置文件,这个配置文件与ImageX的默认配置文件相同。 15.在图形界面中,WimTool对制作映像、解开映像、导出映像、列文件目录等过程提供用户中止操作支持。 16.注册WIM文件关联后可通过双击WIM文件打开WIM映像内的程序或启动到WimTool的图形界面。 17.支持鼠标右键扩展菜单快速展开WIM映像文件和快速制作WIM映像文件,这两操作提供处理进度。 18.支持基于的WIM的系统备份和系统恢复应用,同时具有简单必须的磁盘管理功能。 19.支持每一个WIM映像设置一个自己特色的个性化图标。 20.支持WimMount V6.1.7000.0及以上版本,可以使用WimMount.SYS的新特性,也兼容旧版本的Wimfltr驱动。 四、参数说明 WimTool的命令行参数格式与ImageX的基本相同,其中尖括号""内的参数表示必须输入,方括号"[ ]"内的参数表示可以省略,竖线"|"间的参数只取其一; 当文件目录名、映像卷名、映卷描述等含有空格时必须用引号包围。WimTool的命令行参数"/Apply"、"/Capture"和"/Append"只适合小体积映像使用,不提供处理进度。 1、挂载映像 ①.只读挂载 格式:WimTool.EXE /Mount 示例:WimTool.EXE /Mount D:\Test.WIM "PE Programs" D:\PROGRAMS ②.可挂载 格式:WimTool.EXE /MountRW 示例:WimTool.EXE /MountRW D:\Test.WIM 2 D:\PROGRAMS ③.直接挂载 格式:WimTool.EXE [/OpenFile] 示例:WimTool.EXE D:\Test.WIM ④.快速挂载 格式: 示例:D:\Test.WIM 只有设置WIM文件与WimTool关联才能使用"快速挂载"。当WIM映像内设置挂载信息和挂载路径后,"直接挂载"和"快速挂载"先按WIM映像内设置好挂载信息和挂载路径来挂载, 并执行挂载处理命令;若WIM映像内没有设置挂载信息和挂载路径则按WimTool默认的设置来挂载。 ⑤.重新挂载 格式: WimTool.EXE /ReMount 示例: 重新挂载所有"无效的WIM挂载": WimTool.EXE /ReMount /ALL 重新挂载指定路径的WIM挂载点: WimTool.EXE /ReMount D:\PROGRAMS 本功能需 WimMount V6.1.7000.0 及以上版本支持,可以快速挂上重启后"无效的WIM挂载"。 2、卸载映像 命令行参数格式: WimTool.EXE /UnMount [/Commit|/Update|/All] [/AutoRun] 参数"/AutoRun"时将在卸载映像前执行"卸载处理命令", ①.只读卸载挂载目录的映像 格式:WimTool.EXE /UnMount [/AutoRun] 示例:WimTool.EXE /UnMount D:\PROGRAMS 无任何提示,直接进行只读卸载。 ②.可卸载挂载目录的映像 格式:WimTool.EXE /UnMount /Commit [/AutoRun] 示例:WimTool.EXE /UnMount /Commit D:\PROGRAMS 参数"/Commit"直接以可方式卸载以可方式挂载的映像。 ③.询问可卸载指定的目录 格式:WimTool.EXE /UnMount /Update [/AutoRun] 示例:WimTool.EXE /UnMount /Update D:\PROGRAMS 参数"/Update"会询问卸载时是否以可方式卸载。 ④.卸载所有被挂载的映像 格式:WimTool.EXE /UnMount /All [/AutoRun] 示例: WimTool.EXE /UnMount /All 只读方式卸载所有被挂载的映像,且卸载映像时目标目录的变化不会被更新到原映像中。 3、快速卸载 清除所有挂载点和挂载信息 格式: WimTool.EXE /CleanUp 示例: WimTool.EXE /CleanUp 本功能需 WimMount V6.1.7000.0 及以上版本支持,可以快速清除所有挂载点和挂载信息,包括"有效的WIM挂载"和"无效的WIM挂载", 同时也清除WimMount挂载时目标目录中的残余文件信息。本命令的功能相当于卸载所有映像后再删空目标目录中的文件。 4、解开映像 ①.静默方式,不提供处理进度 格式:WimTool.EXE [/YES] /Apply 示例:WimTool.EXE /Yes /Apply D:\Test.WIM 2 D:\PROGRAMS 其中参数 "/Yes" 表示不确认目标目录是否存在文件而直接解开映像(解开的文件有可能覆盖已存在的文件),省略该参数时, 若目标目录已存在文件则要用户确认才执行解开映像操作。其中映像文件可以是分包文件。 ②.窗口方式,提供处理进度,支持文件过滤,支持操作隐藏分区 格式: WimTool.EXE [格式化参数] [主引导记录] [解压规则] [映像卷ID] [,目标路径] 格式化参数: [[/Format|/QFormat] [FAT32|NTFS]] 主引导记录: [/BOOT ] 解压规则为: [/Config ] 示例: WimTool.EXE D:\Test.WIM /ExtrFile ,D:\PROGRAMS WimTool.EXE 0:4\SysBack.WIM /ExtrFile /Format FAT32 /Boot NTLDR 1, C:\ WimTool.EXE F:\SysBack.WIM /ExtrFile /QFormat NTFS /Boot BOOTMGR 1, 0:1\ WimTool.EXE 0:4\SysBack.WIM /ExtrFile /Format /Boot NTLDR 1, C:\ WimTool.EXE F:\SysBack.WIM /ExtrFile /QFormat /Boot BOOTMGR 1, 0:1\ WimTool.EXE 0:4\SysBack.WIM /ExtrFile /Format /Config MyConfig1.INI 1, C:\ WimTool.EXE F:\SysBack.WIM /ExtrFile /QFormat /Config MyConfig2.INI 1, 0:1\ 当以系统管理员登录,本功能支持操作隐藏分区,并可用分区号代替盘符,见上面的示例。 "映像卷ID"为 1 时可以省略,省略"目标路径名"时WimTool将在映像文件所在的目录中建立一个与映像基本名同名的目录,并将映像解开到其中。 WimTool能识别分包映像并自动解开分包映像(要求所有的分包映像位于同一目录,展开时从1号分包开始)。 5、制作映像 ①.静默方式,不提供处理进度 格式:WimTool.EXE [/Boot] [/Compress ] /Capture [卷名] [描述] 示例:WimTool.EXE /Boot /Compress Maximum /Capture D:\PROGRAMS D:\Test.WIM "MyPrograms" ②.窗口方式,提供处理进度,支持文件过滤,支持操作隐藏分区(必须以系统管理员登录,隐藏分区可以分区号代替)。 格式: WimTool.EXE [捕获规则] [启动标记] [映像文件] 捕获规则为: [/Config ] 启动标记为: [/Boot] 示例: WimTool.EXE D:\PROGRAMS /CompPath /Boot D:\Test.WIM WimTool.EXE C:\ /CompPath /Config MyConfig1.INI 0:4\SysBack.WIM WimTool.EXE 0:1\ /CompPath /Config MyConfig2.INI F:\SysBack.WIM 窗口方式压制新映像时采用最大压缩比。省略"映像文件名"时WimTool将自动建立一个新的映像文件,并保存在"目标路径"所处的目录下,新映像的基本名与"目标路径"同名。 当Wim映像文件存在时,则将目标目录的内容以新的映卷追加到原映像中。 6、追加映卷 格式:WimTool.EXE [/Boot] /Append [卷名] [描述] 示例:WimTool.EXE /Boot /Append D:\MyTools D:\Test.WIM "MyTools" 7、文件关联 ①.注册WIM映像文件与WimTool关联 格式:WimTool.EXE [/M] 示例:WimTool.EXE /Reg /M 参数"/REG"为文件关联,参数"/M"为注册扩展功能。 ②.取消WIM映像文件与WimTool关联 格式:WimTool.EXE 示例:WimTool.EXE /Reg /U 取消文件关联同时也将卸载扩展功能。 8、其它功能 ①.重建系统图标缓存 格式: WimTool.EXE /Icon 示例: WimTool.EXE /Icon 说明: 当系统显示的图标出现异常时,可以通过重建图标缓存来更正,本功能可能只对 NT5.x 系统有效。 ②.启动指定的功能页 格式: WimTool.EXE /Page n 示例: WimTool.EXE /Page 9 说明: WimTool.EXE的功能共有9页,1~8页位于可视界面,第9页为WimTool.EXE的彩蛋。参数"/Page"可启动到指定的功能页,其中"n"为数字"1~9"。 五、使用注意 1、在Vista或以后的系统中,WimTool必须以管理员的身份运行,在 NT5.X 系统中也建议以系统管理员的身份运行WimTool。 2、系统中必须正确安装WimFltr或WimMount组件,WimTool才能正常工作。 3、在精简的WinPE系统中某些功能可能无法使用。 4、系统的临时目录必须有足够的空间;在PE中使用时,临时目录建议设置到硬盘上。 5、一个映像中只有一个映卷具有启动标记;映像中的映卷号是唯一的,而映卷名和卷描述仅作为映像卷的说明,它们并不是唯一的, 就是说一个映像中的不同映卷可以具相同的名称和描述。 6、当系统中的WIM文件关联出现错误或异常时,请点[取消文件关联]按钮,再点[设置文件关联]按钮来修复。 7、如果你对捕获映像的配置文件不很了解,请不要修改它,用默认的设置即可。 六、特别声明 1、WimTool是免费软件,您可无限制地使用、复制、分发和传播本软件,您必须保证每份复制、分发和传播都是真实的和完整的。 2、本人不提供WimTool的任何保证和担保,亦不对用户使用本软件时任何理论上的或实际上的损失承担责任。 3、禁止任何人或任何组织利用本软件从事任何营利活动。 Lxl1638 BBS.WUYOU.COM 茂名二中 老九,2009.08.22
一般要将硬盘分成主引导扇区、操作系统引导扇区、FAT表、DIR目录区和Data数据区等五部分,这里分别进行了介绍!硬盘的文件系统结构 • 新买的硬盘,是没有直接办法使用的,需要将它分区、格式化,然后再安装上操作系统才可以使用。就拿一直沿用到现在的Win9x/Me/2000/XP系列来说,一般要将硬盘分成主引导扇区、操作系统引导扇区、FAT表、DIR目录区和Data数据区等五部分。通常所说的主引导扇区MBR在一个硬盘中是是唯一的,MBR区的内容只有在硬盘启动时才读取其内容,然后驻留内存。其它几内容随你的硬盘分区数的多少而异。 • 主引导扇区(MBR)。主引导扇区位于整个硬盘的0磁道0柱面1扇区,包括硬盘主引导记录MBR(Main Boot Record)和分区表DPT(Disk Partition Table)。其中主引导记录的作用就是检查分区表是否正确以及判别哪个分区为可引导分区,并在程序结束时把该分区的启动程序(也就是操作系统引导扇区)调入内存加以执行。 • 分区表(DPT)。在主引导区中,从地址BE开始,到FD结束为止的64个字节中的内容就是通常所说的分区表。分区表以80H或00H为开始标志,以55AAH为结束标志,每个分区占用16个字节,一个硬盘最多只能分成四个主分区,其中扩展分区也是一个主分区。随着硬盘容量的迅速扩大,引入的扩展分区可以不受四个主分区的限制,把硬盘分区数扩展到“Z”。值得一提的是,MBR是由分区程序(例如DOS的Fdisk.exe)产生的,不同的操作系统可能这个扇区的内容代码是不相同,但是实现的功能只有一个,使其中的一个活动分区获得控制区,正常启动系统。 • 主引导扇区(MBR)。主引导扇区位于整个硬盘的0磁道0柱面1扇区,包括硬盘主引导记录MBR(Main Boot Record)和分区表DPT(Disk Partition Table)。其中主引导记录的作用就是检查分区表是否正确以及判别哪个分区为可引导分区,并在程序结束时把该分区的启动程序(也就是操作系统引导扇区)调入内存加以执行。 • 主分区和扩展分区。主分区是一个比较单纯的分区,通常位于硬盘的最前面一块区域中,构成逻辑C磁盘。在主分区中,不允许再建立其它逻辑磁盘。也可以通过分区软件,在分区的最后建立主分区,或在磁盘的中部建立主分区。扩展分区的概念则比较复杂,也是造成分区和逻辑磁盘混淆的主要原因。由于硬盘仅仅为分区表保留了64个字节的存储空间,而每个分区的参数占据16个字节,故主引导扇区中总计可以存储4个分区的数据。操作系统只允许存储4个分区的数据,如果说逻辑磁盘就是分区,则系统最多只允许4个逻辑磁盘。对于具体的应用,4个逻辑磁盘往往不能满足实际需求。为了建立更多的逻辑磁盘供操作系统使用,系统引入了扩展分区的概念。 所谓扩展分区,严格地讲它不是一个实际意义的分区,它仅仅是一个指向下一个分区的指针,这种指针结构将形成一个单向链表。这样在主引导扇区中除了主分区外,仅需要存储一个被称为扩展分区的分区数据,通过这个扩展分区的数据可以找到下一个分区(实际上也就是下一个逻辑磁盘)的起始位置,以此起始位置类推可以找到所有的分区。无论系统中建立多少个逻辑磁盘,在主引导扇区中通过一个扩展分区的参数就可以逐个找到每一个逻辑磁盘。 • 操作系统引导扇区(OBR)。OBR(OS Boot Record)即操作系统引导扇区,通常位于硬盘的0磁道1柱面1扇区(这是对于DOS来说的,对于那些以多重引导方式启动的系统则位于相应的主分区/扩展分区的第一个扇区),是操作系统可直接访问的第一个扇区,它也包括一个引导程序和一个被称为BPB(BIOS Parameter Block)的本分区参数记录表。其实每个逻辑分区都有一个OBR,其参数视分区的大小、操作系统的类别而有所不同。引导程序的主要任务在当根目录中寻找系统文件IO.SYS,MSDOS.SYS和WINBOOT.SYS三个文件,如果存在,就把IO.SYS文件读入内存,并移交控制权予该文件。在WIN98的系统中,没有MSDOS.sys文件,系统能够正常启动,但是无法进入桌面;如果没有COMMAND.COM文件,能够正常启动到桌面,但是无法进入DOS字符方式。 BPB参数块:记录着本分区的起始扇区、结束扇区、文件存储格式、硬盘介质描述符、根目录大小、FAT个数、分配单元(Allocation Unit,以前也称之为簇)的大小等重要参数。OBR由高级格式化程序产生(例如DOS 的Format.com)。 • 文件分配表(FAT)。FAT(File Allocation Table)即文件分配表,是DOS/Win9x系统的文件寻址系统。为了防止意外损坏,FAT一般做两个(也可以设置为一个),第二FAT为第一FAT的备份, FAT区紧接在OBR之后(对于FAT32格式,位置是从引导扇区开始的第32个扇区就是第一个FAT表的位置),其大小由这个分区的空间大小及文件分配单元的大小决定。随着硬盘容量的迅速发展,Microsoft 的DOS及Windows也先后采用我们所熟悉的FAT12、FAT16和FAT32格式。不过Windows NT、OS/2、UNIX/Linux、Novell等都有自己的文件管理方式,不同于FAT文件格式。FAT12是使用12BIT来表示簇的位置,最大容量32M,FAT16是使用两个字节16BIT位来表示簇的位置,分区最大容量2G,而FAT32采用4个字节来表示簇的位置,分区最大容量65G。 • 目录区(DIR)。DIR是Directory即根目录区的简,在FAT12和FAT16格式中,DIR紧接在第二FAT表之后,而在FAT32格式中,根目录区的位置可以在分区中的任意位置,其起始位置是由引导扇区给出的。单有FAT表还不能确定文件在磁盘中的具体位置,只有FAT表和DIR区配合使用,才能准确定位文件的确切位置。DIR记录着每个文件(目录)的文件名,扩展名,是否支持长文件各,起始单元(这是最重要的)、文件的属性,大小,创建日期,修改日期等住处内容。操作系统在读文件时,根据DIR中的起始单元,结合FAT表就可以知道文件在磁盘的具体位置,然后顺序读取每个簇的内容就可以了。 • 数据区(DATA) 。在DIR区之后,才是真正意义上的数据存储区,即DATA区。DATA虽然占据了硬盘的绝大部分空间,但没有了前面的各部分,它对于我们来说,也只能是一些枯燥的二进制代码,没有任何意义。注意:我们通常所说的格式化程序(指高级格式化,例如DOS下的Format程序),并没有把DATA区的数据清除,只是重了FAT表而已,除非你使用了“Format X: /U”命令,强制对每一扇区“F6”。 至于硬盘分区,也只是修改了MBR和OBR,绝大部分的DATA区的数据并没有被改变,这也是许多硬盘数据能够得以修复的原因。但即便如此,MBR,OBR,FAT,DIR之一被破坏的话,我们的数据也无法正常读取。
简单多用户文件系统 1.课程设计的目的 操作系统课程设计是计算机专业重要的教学环节,它为学生提供了一个既动手又动脑 ,将课本上的理论知识和实际有机的结合起来,独立分析和解决实际问题的机会。为 进一步巩固和复习操作系统的基础知识,培养学生结构化程序、模块化程序设计的方法 和能力,提高学生调试程序的技巧和软件设计的能力,提高学生分析问题、解决问题以 及综合利用 C 语言进行程序设计的能力。 本课程设计设计一个简单多用户文件系统,通过具体的文件存储空间的管理、文件的 物理结构、目录结构和文件操作的实现,加深理解文件系统的内部功能及内部实现,掌 握文件存储空间的管理,理解文件的物理结构,掌握目录结构的实现,掌握文件操作的 实现。 2. 课程设计的开发语言 Microsoft Visual C++ 6.0下的Win32控制台程序,C语言。VC++是Microsoft公司的C++开发工具,具有集成开发 环境,可提供编辑C语言,C++以及C++/CLI等编程语言。本课程设计的文件系统利用VC+ +软件的编辑C语言功能,在Win32控制台程序下操作,在DOS环境下运行。 3. 功能描述 在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个简单多用户的文件 系统。文件物理结构可采用显式链接或其他方法。磁盘空闲空间的管理可选择位示图或 其他方法。如果采用位示图来管理文件存储空间,并采用显式链接分配方式,则可以将 位示图合并到FAT中。 一个较实用的用户界面,方便用户使用。可提供以下相关文件操作: 具有login (用户登录) 系统初始化(建文件卷、提供登录模块) 列出文件目录:dir 文件内容的查看:view 新建文件:create 删除文件:delete 修改文件:modify 锁定状态转换:lock 注销退出:logout 文件目录结构采用多用户目录结构,每个目录包含文件名、大小、是否锁定、物理 地址等信息,可以通过目录实现对文件的读和的保护。 4. 方案论证 4.1概要设计 本系统为二级文件系统,既要实现对文件的增删改查,同时又具备登陆系统、注册用 户的功能,各个用户之间的文件系统互不干扰。采用两级目录,其中第一级对应于用户 账号,第二级对应于用户帐号下的文件。另外,为了简便文件系统未考虑文件共享,文 件系统安全以及管道文件与设备文件等特殊内容。 系统采用结构体来存储用户、文件目录文件数据内容: 0 48*5 48*5+44*50 48*5+44*50+264*200 每个分区都是由结构体组成,每个分区的结构体的个数由格式化系统时决定。 为系统设计一个简单的二级文件系统,可以实现下列几条命令:login(用户登陆) 、dir(列文件目录)、view(查看文件内容)、create(新建文件)、delete(删除文 件)、modify(修改文件)、lock(锁定转换)、logout(注销)。列目录时列出文件 名、文件长度、是否锁定、物理地址,源文件可以进行读保护。主函数所有功能流程 图如图1所示。 图1 主函数功能流程图 4.2详细设计 4.2.1用户登录(login)模块 首次进入系统时,还没有文件系统,则会提示格式化文件系统,创建分区,并初始化 分区,系统的初始化要完成文件系统的建立,包括以下几部分:请求内存、设置位示图 、初始化文件索引、初始化文本块链表、初始化系统的当前状态、创建一个根目录做为 系统的根。验证登录用户的身份,用户登录成功后会初始化当前用户等一系列的系统当 前信息,默认用户的类型为普通用户,如果用户未能通过身份验证,提示用户登录失败 ,退出系统。用户登录模块的算法流程图如图2所示。 图2 用户登录流程图 4.2.2查看文件内容(view)模块 图3 查看文件内容流程图 只支持在当前用户当前目录下进行操作,前提是用户已创建文件,通过用户给定的文 件名在文件索引中搜索到文件的物理文件块ID,找到该文件元素后,将文件当前状态置 为打开,通过类似的查找方式,找到文件的数据部分,将数据显示到界面,默认创建的 时候用0填充文件内容。查看文件内容模块的算法流程图如图3所示。 4.2.3新建文件(create)模块 图4 新建文件模块流程图 只支持在当前用户目录下创建文件,根据位示图找到一个未使用的文件块用来存放用 户的文件信息,根据系统当前状态来构建一个文件系统元素放入到找到的文件块中,新 创建的文件状态为关闭,同时更新位示图和文件索引。新建文件时要求输入文件名称, 当文件名称不存在,即与当前用户文件目录下的文件不发生冲突时,继续接收用户提供 的文件长度,当文件不发生越界则接受锁定状态,文件新建成功。新建文件模块算法流 程图如上图4所示。 4.2.4删除文件(delete)模块 删除文件并不真正清理文件的物理存储内容,只
实现一个完整的FAT16文件系统是一个相对复杂的任务,如果要一个完整的FAT16文件系统需要大量的时间和精力,而且需要考虑很多细节问题。这里我提供一个基本的框架,可以帮助你了解如何实现一个FAT16文件系统。 1. 定义FAT表数据结构 在FAT16中,FAT表是一个重要的数据结构,它用于记录磁盘上每个文件的存储情况。因此,我们需要定义一个FAT表结构体,用于存储FAT表的数据。 ``` struct FAT16_FATTable { uint16_t* entries; // 指向FAT表的指针 uint32_t totalEntries; // FAT表总共的条目数 }; ``` 2. 定义目录数据结构 在FAT16中,每个文件都有一个目录,用于存储文件的属性和位置。因此,我们需要定义一个目录的结构体。 ``` struct FAT16_DirectoryEntry { char name[11]; // 文件名 uint8_t attributes; // 文件属性 uint32_t size; // 文件大小 uint16_t cluster; // 文件的起始簇号 // ... 其他文件属性 }; ``` 3. 定义根目录和子目录数据结构 在FAT16中,有两种类型的目录:根目录和子目录。因此,我们需要定义两个数据结构,用于存储根目录和子目录的内容。 ``` struct FAT16_RootDirectory { FAT16_DirectoryEntry* entries; // 根目录的指针 uint32_t totalEntries; // 根目录的总数 }; struct FAT16_SubDirectory { char name[11]; // 子目录名 FAT16_DirectoryEntry* entries; // 子目录的指针 uint32_t totalEntries; // 子目录的总数 }; ``` 4. 定义文件数据结构 在FAT16中,每个文件都有一个对应的数据区,用于存储文件的内容。因此,我们需要定义一个文件数据结构。 ``` struct FAT16_File { char* data; // 文件数据的指针 uint32_t size; // 文件大小 uint16_t cluster; // 文件的起始簇号 // ... 其他文件属性 }; ``` 5. 实现FAT16文件系统类 基于上述定义的数据结构,我们可以定义一个FAT16文件系统的类。该类应该包含以下方法: - `FAT16_FileSystem()`: 构造函数,用于初始化FAT表、根目录和文件数据区。 - `~FAT16_FileSystem()`: 析构函数,用于释放FAT表、根目录和文件数据区的内存。 - `void load()`: 从磁盘中读取FAT表、根目录和文件数据区的数据。 - `void save()`: 将FAT表、根目录和文件数据区的数据入磁盘。 - `FAT16_File* readFile(char* filename)`: 从文件系统中读取一个文件。 - `void writeFile(char* filename, char* data, uint32_t size)`: 将一个文件文件系统。 - `void deleteFile(char* filename)`: 删除文件系统中的一个文件。 以上是一个基本的FAT16文件系统的框架,你可以根据实际情况进行调整和修改。当然,具体实现过程因人而异,需要根据具体需求进行编

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值