如何在Adobe AIR中将带有路径的文件名转换为短文件名(DOS样式)?

时间:2010-02-12 10:03:04

标签: air short-filenames

如何在Adobe AIR中将带有路径的文件名转换为短文件名(DOS样式)?

例如转换下一个路径

"C:\Program Files\Common Files\Adobe AIR\Versions\1.0\Resources\Adobe AIR Updater.exe"

"C:\PROGRA~1\COMMON~1\ADOBEA~1\VERSIONS\1.0\RESOUR~1\ADOBEA~1.EXE"

有算法吗?

2 个答案:

答案 0 :(得分:2)

假设您的文本部分是字符串变量,您可以使用“\”作为分隔符将其拆分。然后,您将有一个数组,您可以使用它来检查每个块是否超过8个字符。循环数组时,你可以砍掉每个长块的最后一个字符并放入~1。由于您处于循环中,您可以逐步将所有这些更改添加到临时变量中,这将在最后为您提供最终的编辑结果。

唯一有点棘手的部分是在最后注意.exe部分。

所以,如果我是你,我会开始阅读String.split(),String.substring(),for循环,数组

答案 1 :(得分:1)

以下是我方便的方法:

public static string GetShortPathName(string path)
{
    string[] arrPath = path.Split(System.IO.Path.DirectorySeparatorChar);
    path = arrPath[0];   // drive
    // skip first, ( drive ) and last program name
    for (int i = 1; i < arrPath.Length - 1; i++)                
    {
        string dosDirName = arrPath[i];
        if (dosDirName.Count() > 8)
        {
            dosDirName = dosDirName.Substring(0, 6) + "~1";
        }
        path += System.IO.Path.DirectorySeparatorChar + dosDirName;
    }
    // include program name if any
    path += System.IO.Path.DirectorySeparatorChar + arrPath[arrPath.Length - 1];   
    return path;
 }