Windows长文件名和短文件名

Windows长文件名和短文件名

        在FAT16文件系统中,由于FDT中的文件目录登记项只为文件名保留了8个字节,为扩展名保留了3个字节,所以DOS和Windows的用户为文件起名字时要受到8.3格式的限制。但是,从Windows95开始,这种限制被打破了,在Windows9x中可以实现长文件名。

在Windows9x中,文件或目录实际存储着两个名字,一个长文件名和一个长文件名的别名(短文件名)。其中,作为别名的短文件名储存在8.3格式的32字节的目录登记项中,长文件名则存储在属性标志为OFH的32字节目录登记项中,每个这样的目录登记项存储13个字符,每个文件名需要若干个这样的目录登记项,当需要的时候Windows9x会把它们重新组成长文件名。

当创建一个长文件名时,长名目录项和对应的别名(短名)目录项的存储有以下6个处理原则:
·取长文件名的前6个字符加上“~1”形成长文件名的别名(即短文件名),并将长文件名中最后一部分(最后一个间隔符“.”后面字符)的前3个字符作为其扩展名。
·如果已存在这个名字的文件,则符号“~”后的数字会自动增加。
·任何包括小写字母的文件名都被看作是长文件名,而不管其长度是多少。如果有对于DOS和Windows3.x非法的字符,则用下划线替代。
·长文件名存储在属性标志为OFH的32字节目录登记项中(这是与短文件名目录项的区别)。用Unicode格式编码,每个字符(无论是英文或是汉字)均占2字节。
·每个目录登记项用26个字节存储13个字符(序号由第1字节指定)。位置多余时,先用00表示结束,再用FFH填充。
·长文件名用若干个长名目录项保存,长文件名目录项倒序排在文件短目录项前面。
采用以上的存储办法后,在Windows9x下创建的长文件名在DOS或Windows3.x下就只能看见其对应的短文件名,完全忽略了长文件名。在Windows9x下运行的应用程序通过操作系统请求文件名时,Windows9x会根据应用程序的性质分别给予不同的文件名,16位应用程序得到8.3格式的文件名,而32位应用程序得到长文件名。

使用长文件名存在的问题

Windows9x通过以上办法虽然实现了长文件名与DOS和Windows3.x的兼容,但也存在着一些问题:
(1)长文件名要占用较多的目录登记项,而FAT文件系统根目录下的目录登记项的数目又是固定的,一般为512个。一个128字符的长文件名就需要11个文件目录登记项(其中1个用于存储短文件名,其余10个用于存储长文件名)。
(2)Windows9x中创建的长文件名在DOS或Windows3.x下更名或删除时,其长文件名将会丢失,用于长文件名的目录登记项空间自然也无法收回。
(3)在Windows9x中运行16位的应用程序时,当该程序要改一文件名时,长文件名将会丢失。
(4)由于长文件名使用的目录登记项必须是连续的,频繁的创建和删除长文件名,将会造成大量的磁盘碎片。

正因为Windows9x长文件名存在以上的问题,所以,如果用户主要使用16位的应用程序或者需要与DOS和Windows3.x交换文件时,最好禁止使用长文件名。如果主要使用32位的应用程序,就可以使用长文件名,但使用时注意:
·尽量不要在根目录下创建长文件名。
·经常运行Windows9x中的磁盘碎片规整程序,回收丢失的目录登记项。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值