引用问题“比如“C:\Program Files”应该写为“C:\Progra~1”,如果在出现一个文件夹的名称为“C:\Program File”又如何表示呢? ”
我们知道,在计算机中同一位置,也是就同一目录下不允许出现相同的名字,也就是说楼主的比喻是不恰当的。
当一个磁盘或目录下有长文件名时,由于DOS只能识别“83制”文件,所以会取长文件名的前“6个字母”加“~1”来表示,如同问题中的“C:\Program Files”应该写为“C:\Progra~1”,如果再有“Program Common”这样的文件,那么名字就变成这样了:
“C:\Program Common”应该写为“C:\Progra~1”,
“C:\Program Files”应该写为“C:\Progra~2”,
也就是说,按字母的顺序写的。
using SystemRuntimeInteropServices;
[DllImport("kernel32dll", CharSet = CharSetAuto)]
public static extern int GetLongPathName(string short_path, StringBuilder long_path, int long_len);
internal static string GetLongPath(string procpath)
{
if (procpathLength > 0)
{
try
{
if (procpathContains("~"))
{
StringBuilder sbrlong = new StringBuilder(256);
GetLongPathName(procpath, sbrlong, 256);
procpath = sbrlongToString();
}
}
catch(Exception ex)
{
return exMessage;
}
return path;
}
return stringEmpty;
}
//delphi 获取文件所在路径
ExtractFileDrive :返回完整文件名中的驱动器,如"C:"
ExtractFilePath:返回完整文件名中的路径,最后带“/”,如"C:/test/"
ExtractFileDir:返回完整文件名中的路径,最后不带“/” ,如"C:/test"
ExtractFileName:返回完整文件名中的文件名称 (带扩展名),如"mytestdoc"
ExtractFileExt 返回完整文件名中的文件扩展名(带),如"doc"
ExtractRelativePath : 返回相对路径,定义如下:
function ExtractRelativePath(const BaseName, DestName: string): string;
使用测试下如:
SysUtilsExtractRelativePath('C:/test','C:/Test/TestRelativePath'):返回TestRelativePath
SysUtilsExtractRelativePath('C:/Test/TestRelativePath','C:/test'):返回'/TestRelativePath'
SysUtilsExtractRelativePath('C:/Test/TestRelativePath/','C:/test'):返回'//TestRelativePath'
ExtractShortPathName :返回短文件名,即8+3,文件名长八位,扩展名为3号,为保持DOS系统兼容而存在
若想获取的文件名不带路径,可用:
ChangeFileExt(TIdAttachment(MsgMessagePartsItems[intIndex])Filename,''); 函数将扩展名改掉即可。
以上就是关于DOS里面,长文件名如何用短文件名代替全部的内容,包括:DOS里面,长文件名如何用短文件名代替、C#中已知文件的短文件名如何将其还原成长文件名、delphi如何获得指定路径文件的文件名等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)