不是所有的短文件名都包含有波浪符号


不是所有的短文件名都包含有波浪符号

文章插图
短文件名:特仑苏.txt = 特~1.txt想起了一句话:不是所有的牛奶都叫特仑苏 。
我想,大多数人都看到过Windows系统为长文件名自动生成的对应的短文件名 。
举个例子,如果有一个文件名为”Long name for file.txt”,则你可能会得到类似这样的短文件名”LONGNA~1.TXT”,如果系统发现这个短文件名存在很多重复的,则还会生成这样的名称:”LO18C9~1.TXT” 。
从这个例子中,我们看到这些短文件名都有一个共同之处:它们都包含有波浪符号(~) 。
你可能不知道的是不是每个短文件名都包含有波浪符号 。
每个文件系统都有自己的一套方法来实现短文件命名 。Windows95独占式的使用”~n”实现短文件名 。
算法类似于下图:
WindowsNT则引入了一种名为”hexadecimal hash overflow”的技术来实现短文件名的生成 。然而,有些系统,比如Novell,则采用简单的字符串截断的方式实现 。例如,如果Novell系统中有一个长文件名”Long name for file.txt”,则Novell会将它截断为”LONGNAME.TXT” 。
所以,请不要假设所有的短文件都会带有波浪符号,因为这并不是事实 。
这也意味着,如果你发现一个文件名里没有包含波浪符号,你就想着可以跳过对GetLongFileName的调用,这可不行:因为你的这一优化在Novell网络上是无效的,是会掉坑里去的 。
总结俱往矣,短文件名,终将还是会消失在历史的长河中,和我们一样,都会变成层土 。
想想,其实也挺平常的 。
最后Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助 。
本文来自:《Not all short filenames contain a tilde》


    以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

    「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: