Windows長文件名和短文件名 在FAT16文件系統(tǒng)中,由于FDT中的文件目錄登記項(xiàng)只為文件名保留了8個(gè)字節(jié),為擴(kuò)展名保留了3個(gè)字節(jié),所以DOS和Windows的用戶為文件起名字時(shí)要受到8.3格式的限制。但是,從Windows95開始,這種限制被打破了,在Windows9x中可以實(shí)現(xiàn)長文件名。
在Windows9x中,文件或目錄實(shí)際存儲(chǔ)著兩個(gè)名字,一個(gè)長文件名和一個(gè)長文件名的別名(短文件名)。其中,作為別名的短文件名儲(chǔ)存在8.3格式的32字節(jié)的目錄登記項(xiàng)中,長文件名則存儲(chǔ)在屬性標(biāo)志為OFH的32字節(jié)目錄登記項(xiàng)中,每個(gè)這樣的目錄登記項(xiàng)存儲(chǔ)13個(gè)字符,每個(gè)文件名需要若干個(gè)這樣的目錄登記項(xiàng),當(dāng)需要的時(shí)候Windows9x會(huì)把它們重新組成長文件名。 當(dāng)創(chuàng)建一個(gè)長文件名時(shí),長名目錄項(xiàng)和對(duì)應(yīng)的別名(短名)目錄項(xiàng)的存儲(chǔ)有以下6個(gè)處理原則: ·取長文件名的前6個(gè)字符加上“~1”形成長文件名的別名(即短文件名),并將長文件名中最后一部分(最后一個(gè)間隔符“.”后面字符)的前3個(gè)字符作為其擴(kuò)展名。 ·如果已存在這個(gè)名字的文件,則符號(hào)“~”后的數(shù)字會(huì)自動(dòng)增加。 ·任何包括小寫字母的文件名都被看作是長文件名,而不管其長度是多少。如果有對(duì)于DOS和Windows3.x非法的字符,則用下劃線替代。 ·長文件名存儲(chǔ)在屬性標(biāo)志為OFH的32字節(jié)目錄登記項(xiàng)中(這是與短文件名目錄項(xiàng)的區(qū)別)。用Unicode格式編碼,每個(gè)字符(無論是英文或是漢字)均占2字節(jié)。 ·每個(gè)目錄登記項(xiàng)用26個(gè)字節(jié)存儲(chǔ)13個(gè)字符(序號(hào)由第1字節(jié)指定)。位置多余時(shí),先用00表示結(jié)束,再用FFH填充。 ·長文件名用若干個(gè)長名目錄項(xiàng)保存,長文件名目錄項(xiàng)倒序排在文件短目錄項(xiàng)前面。 采用以上的存儲(chǔ)辦法后,在Windows9x下創(chuàng)建的長文件名在DOS或Windows3.x下就只能看見其對(duì)應(yīng)的短文件名,完全忽略了長文件名。在Windows9x下運(yùn)行的應(yīng)用程序通過操作系統(tǒng)請(qǐng)求文件名時(shí),Windows9x會(huì)根據(jù)應(yīng)用程序的性質(zhì)分別給予不同的文件名,16位應(yīng)用程序得到8.3格式的文件名,而32位應(yīng)用程序得到長文件名。 使用長文件名存在的問題 Windows9x通過以上辦法雖然實(shí)現(xiàn)了長文件名與DOS和Windows3.x的兼容,但也存在著一些問題: (1)長文件名要占用較多的目錄登記項(xiàng),而FAT文件系統(tǒng)根目錄下的目錄登記項(xiàng)的數(shù)目又是固定的,一般為512個(gè)。一個(gè)128字符的長文件名就需要11個(gè)文件目錄登記項(xiàng)(其中1個(gè)用于存儲(chǔ)短文件名,其余10個(gè)用于存儲(chǔ)長文件名)。 (2)Windows9x中創(chuàng)建的長文件名在DOS或Windows3.x下更名或刪除時(shí),其長文件名將會(huì)丟失,用于長文件名的目錄登記項(xiàng)空間自然也無法收回。 (3)在Windows9x中運(yùn)行16位的應(yīng)用程序時(shí),當(dāng)該程序要改一文件名時(shí),長文件名將會(huì)丟失。 (4)由于長文件名使用的目錄登記項(xiàng)必須是連續(xù)的,頻繁的創(chuàng)建和刪除長文件名,將會(huì)造成大量的磁盤碎片。 正因?yàn)閃indows9x長文件名存在以上的問題,所以,如果用戶主要使用16位的應(yīng)用程序或者需要與DOS和Windows3.x交換文件時(shí),最好禁止使用長文件名。如果主要使用32位的應(yīng)用程序,就可以使用長文件名,但使用時(shí)注意: ·盡量不要在根目錄下創(chuàng)建長文件名。 ·經(jīng)常運(yùn)行Windows9x中的磁盤碎片規(guī)整程序,回收丟失的目錄登記項(xiàng)。 |
|
|