长文件名的处理
在FAT32的directory entry里,所预留的文件名的长度是8.3格式的,也就是说,文件名是8个字符,后缀名是3个字符,长于这个的就被认为不合法。不太确定这个规定是从FAT12开始的,还是从FAT16开始的,总之在FAT32里依旧有这个限制的影子,但FAT32同样也有机制去处理更长的文件名。
下面是按照第一篇文章一样的方式创建出来的FAT32文件格式的image文件,然后在里面创建一个名字巨长无比的文件,就叫abcdefghijklmnopqrstuvwxyz.txt1234吧,这个是远远突破了8.3格式的要求了,下面是它在FAT32 image里的样子,如图:
至于为什么会找到0x9e000这个地址,请看FAT32学习笔记(一)里的介绍。
从这个截图里可以看到,在0x9e060的地方和文件名非常相似,所不同的是创建的文件名是小写,而image里所存储的却是大写,而且,在不考虑长文件名支持的情况下,这个文件读出来会是"ABCDEF~1.TXT",相信很多人都会有一种特别熟悉的感觉,尤其是这个“xxxx~1.xxx”中的“~1”。接下来就是FAT32中对长文件名的格式定义ÿ