因为dos不支持长文件名,有什么方法能把一个长文件名转成dos支持的文件名模式
谢谢了

解决方案 »

  1.   

    using System;
    using System.Text;
    using System.Runtime.InteropServices;namespace ShellPathNameConvert
    {
        /**//// <summary>
        /// Converts file and directory paths to their respective
        /// long and short name versions.
        /// </summary>
        /// <res>This class uses InteropServices to call GetLongPathName and GetShortPathName</res>
        public class Convert
        {
            [DllImport("kernel32.dll")]
            static extern uint GetLongPathName(string shortname, StringBuilder
                longnamebuff, uint buffersize);        [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
            public static extern int GetShortPathName(
                [MarshalAs(UnmanagedType.LPTStr)]
                string path,
                [MarshalAs(UnmanagedType.LPTStr)]
                StringBuilder shortPath,
                int shortPathLength);        /**//// <summary>
            /// The ToShortPathNameToLongPathName function retrieves the long path form of a specified short input path
            /// </summary>
            /// <param name="shortName">The short name path</param>
            /// <returns>A long name path string</returns>
            public static string ToLongPathName(string shortName)
            {
                StringBuilder longNameBuffer = new StringBuilder(256);
                uint bufferSize = (uint)longNameBuffer.Capacity;            GetLongPathName(shortName, longNameBuffer, bufferSize);            return longNameBuffer.ToString();
            }        /**//// <summary>
            /// The ToLongPathNameToShortPathName function retrieves the short path form of a specified long input path
            /// </summary>
            /// <param name="longName">The long name path</param>
            /// <returns>A short name path string</returns>
            public static string ToShortPathName(string longName)
            {
                StringBuilder shortNameBuffer = new StringBuilder(256);
                int bufferSize = shortNameBuffer.Capacity;            int result = GetShortPathName(longName, shortNameBuffer, bufferSize);            return shortNameBuffer.ToString();
            }
        }
    }
      

  2.   

    运行结果:
    Current directory:
    D:\Documents and Settings\Administrator\桌面\ShellPathNameConvert\ShellPathNameC
    onvertTest\bin\DebugShort path name:
    D:\DOCUME~1\ADMINI~1\桌面\SHELLP~1\SHELLP~2\bin\DebugLong path name:
    D:\Documents and Settings\Administrator\桌面\ShellPathNameConvert\ShellPathNameC
    onvertTest\bin\Debug