C++ Builder 參考手冊(cè) ? System::Sysutils ? ExtractShortPathName
獲取路徑和文件名的 8.3 格式的短路徑和文件名
頭文件:#include <System.SysUtils.hpp>
命名空間:System::Sysutils
函數(shù)原型:
System::UnicodeString __fastcall ExtractShortPathName(const System::UnicodeString FileName);
參數(shù):
- FileName 路徑和文件名;
返回值:
- 8.3 格式的短文件名万俗,如果 FileName 存在地回,只有 Windows 操作系統(tǒng)有短文件名;
- 直接返回 FileName鸠补,如果 FileName 沒(méi)有短文件名膘滨;
- 空字符串耀鸦,如果 FileName 不存在。
- 8.3 格式的文件名是古老的 DOS 文件名的標(biāo)準(zhǔn)顷扩,文件名最長(zhǎng) 8 個(gè)字符拐邪,后綴最長(zhǎng) 3 個(gè)字符,文件名和后綴之間用點(diǎn)分隔隘截,所以稱為 "8.3" 格式庙睡;
- 為了兼容古老的只識(shí)別 8.3 格式文件的軟件,Windows 操作系統(tǒng)給文件做了兼容技俐,長(zhǎng)度超過(guò) 8.3 格式的文件乘陪,同時(shí)還有一個(gè) 8.3 格式的短文件名可以訪問(wèn)這個(gè)文件,這個(gè)函數(shù)是獲取這個(gè)兼容 8.3 格式的短文件名雕擂;
- 不是所有的文件都有短文件名啡邑,在 Windows 10 / 11 操作系統(tǒng)上測(cè)試的結(jié)果是 C 盤上的文件有短文件名,D 盤上的文件沒(méi)有井赌,如果把 D 盤的文件復(fù)制到 C 盤谤逼,會(huì)有短文件名贵扰,再?gòu)?fù)制到 D 盤上就又沒(méi)有了:
? 例如測(cè)試程序 Sysutils_ExtractShortPathName.exe (本文后面的例子) 在 D 盤的文件夾
D:\Hsuanlu\Programs\System.Sysutils\Functions\ExtractShortPathName\
里面的時(shí)候,獲取的短文件名是這個(gè)文件名本身流部,沒(méi)有短文件名戚绕;
? 把 Sysutils_ExtractShortPathName.exe 復(fù)制到C:\Program Files
里面,就能獲取到短文件名了枝冀,F(xiàn)ileName 是
C:\Program Files\Hsuanlu\ExtractShortPathName\Sysutils_ExtractShortPathName.exe
得到的短文件名是
C:\PROGRA~1\Hsuanlu\EXTRAC~1\SYSUTI~1.EXE
? 又測(cè)試了在 C 盤根目錄創(chuàng)建一個(gè)Hsuanlu
文件夾舞丛,把測(cè)試程序復(fù)制到里面,F(xiàn)ileName 是
C:\Hsuanlu\ExtractShortPathName\Sysutils_ExtractShortPathName.exe
得到的短文件名是
C:\Hsuanlu\EXTRAC~1\SYSUTI~1.EXE
? 而C:\Hsuanlu\Test1
文件不存在果漾,得到的短文件名是空字符串球切;
? 又測(cè)試了C:\Program Files (x86)\Embarcadero\Studio
得到的短文件名是
C:\PROGRA~2\EMBARC~1\Studio
例子:獲取應(yīng)用程序的路徑
void __fastcall TForm1::Button1Click(TObject *Sender)
{
UnicodeString s = Application->ExeName;
Memo1->Lines->Add(s);
Memo1->Lines->Add(Sysutils::ExtractShortPathName(s));
s = L"C:\\Hsuanlu\\Test1";
Memo1->Lines->Add(s);
Memo1->Lines->Add(Sysutils::ExtractShortPathName(s));
s = L"C:\\Program Files (x86)\\Embarcadero\\Studio";
Memo1->Lines->Add(s);
Memo1->Lines->Add(Sysutils::ExtractShortPathName(s));
}
運(yùn)行結(jié)果:
運(yùn)行結(jié)果
運(yùn)行結(jié)果
運(yùn)行結(jié)果
相關(guān):
- System::Sysutils::IncludeTrailingPathDelimiter
- System::Sysutils::ExcludeTrailingPathDelimiter
- System::Sysutils::PathDelim
- System::Sysutils::DriveDelim
- System::Sysutils::ChangeFileExt
- System::Sysutils::ChangeFilePath
- System::Sysutils::ExtractFileDir
- System::Sysutils::ExtractFileDrive
- System::Sysutils::ExtractFileExt
- System::Sysutils::ExtractFileName
- System::Sysutils::ExtractFilePath
- System::Sysutils::ExtractRelativePath
- System::Sysutils::ExtractShortPathName
- System::Sysutils
- std::_fullpath, std::_tfullpath, std::_wfullpath
- std::_makepath, std::_tmakepath, std::_wmakepath
- std::_splitpath, std::_tsplitpath, std::_wsplitpath
- <cstdlib>
C++ Builder 參考手冊(cè) ? System::Sysutils ? ExtractShortPathName