Windows 一些常用到的文件路径相关的API

版权声明:欢迎关注我的微信公众号:「easyserverdev」,中文名:『高性能服务器开发』。 https://blog.csdn.net/analogous_love/article/details/86680582

Path API

需要头文件:shlwapi.h
其中有一些函数功能存在重复,我在认为比较常用的的函数上加红。

BOOL PathFileExists(LPCTSTR lpszPath)

功能:检查文件/路径是否存在

LPTSTR PathFindFileName(LPCTSTR pPath)

功能:获得路径中的文件名
例如: PathFileFileName( “c://Program Files//File.txt” ) = “File.txt”。
如果路径中不包含文件名,则返回值是最下面的目录名。

LPTSTR PathFindExtension(LPCTSTR pPath)

功能:获取路径或文件名中的文件扩展名
例如:PathFindExtension( “File.txt” ) = “.txt”

LPTSTR PathFindNextComponent(LPCTSTR pszPath)

例如:PathFindNextComponent( “c://Program Files//Directory” ) = “Program Files//
Directory”
PathFindNextComponent( “c://Program Files” ) = “Program Files”

BOOL PathFindOnPath( IN OUT LPTSTR pszFile , IN LPCTSTR * ppszOtherDirs)

功能:在指定的目录中寻找文件。
参数:
pszFile 要寻找的文件名,确保 pszFile 有足够的大小来容纳 MAX_PATH 个字符。如果能找到指定的文件,该参数将返回文件的全路径。
ppszOtherDirs该参数是首先要寻找的目录列表,它可以为NULL,如果为NULL,函数将在系统目录,当前目录和由PATH设定的目录中查找。

LPTSTR PathGetArgs(LPCTSTR pszPath)

功能:从路径中分析参数
例如:LPTSTR pszParam = PathGetArgs( “notepad.exe c://temp.txt” )
pszParam 返回 “c://temp.txt”

int PathGetDriveNumber(LPCTSTR lpsz)

功能:从路径中分析盘符
返回值:成功返回 0 –25 ,代表(A – Z),失败返回 –1

BOOL PathIsContentType(LPCTSTR pszPath,LPCTSTR pszContentType)

功能:检查文件是否为指定的ContentType
例如:PathIsContentType( “hello.txt” , “text/plain” ) 返回TRUE
 PathIsContentType( “hello.txt” , “image/gif” ) 返回FALSE

BOOL PathIsDirectory(LPCTSTR pszPath)

功能:检查路径是否为有效目录。注意路径不能包含文件名

BOOL PathIsFileSpec(LPCTSTR lpszPath)

功能:检查路径中是否带有 ‘:’ 和 ‘/’ 分隔符

BOOL PathIsHTMLFile(LPCTSTR pszFile)

功能:检查是否为HTML文件

BOOL PathIsPrefix(IN LPCTSTR pszPrefix,IN LPCTSTR pszPath)

功能:检查路径是否包含指定前缀,前缀如:”盘符://” 、“…//” 、”.//”
PathIsPrefix ( “c://” , “c://hello.txt” ) 返回 TRUE

BOOL PathIsRelative(LPCTSTR lpszPath)

功能:检查路径是否是相对路径

BOOL PathIsRoot(LPCTSTR pPath)

功能:检查路径是否是根目录

BOOL PathIsSameRoot(LPCTSTR pszPath1,LPCTSTR pszPath2);

功能:比较两个路径是否在同一盘符

BOOL PathIsUNC(LPCTSTR pszPath );

功能:判断路径是否是UNC格式

BOOL PathIsURL(IN LPCTSTR pszPath );

功能:判断路径是否是URL

BOOL PathMatchSpec( LPCTSTR pszFileParam,LPCTSTR pszSpec)

功能:用带有通配符(号和?号)的字符串去比较另一个字符串
例如:PathMatchSpec( “http://news.sina.com.cn” , “sina.com” ) 返回TRUE
PathMatchSpec( “c://hello.txt” , “
.txt” ) 返回TRUE

void PathRemoveArgs(LPTSTR pszPath);

功能:删除路径中带有的参数

LPTSTR PathRemoveBackslash(LPTSTR lpszPath);

功能:删除路径结尾多余的’/’符号

void PathRemoveBlanks(LPTSTR lpszString);

功能:删除字符串头尾的空格

void PathRemoveExtension( LPTSTR pszPath);

功能:删除路径后面的文件扩展名

BOOL PathRemoveFileSpec( LPTSTR pszPath);

功能:删除路径后面的文件名和’/’符号。该函数可以分析出一个文件的路径。
例:szPath = “c://windows//system32//nt.dll” ;
调用PathRemoveFileSpec( szPath ) 后,szPath = “c://windows//system32”

BOOL PathRenameExtension( IN OUT LPTSTR pszPath,LPCTSTR pszExt);

功能:替换路径后面的文件扩展名,如果pszPath后面不带扩展名,则新的扩展名会被添加上去。
pszPath pszPath至少需要MAX_PATH个字符的空间
pszExt 新的扩展名,必需包含 . 号

void PathStripPath(LPTSTR pszPath );

功能:从路径中分析出文件名
例: PathStripPath( “c://test//hello.txt” ) => hello.txt

BOOL PathStripToRoot( LPTSTR szRoot );

功能:从路径中分析出盘符

void PathUnquoteSpaces( LPTSTR lpsz );

功能:从带引号的路径中取出路径
例:szPath = “/”c://Program Files/””
PathUnquoteSpaces( szPath ) => szPath = “c://Program Files”
附另一路径相关函数,由ImageHlp提供

BOOL SearchTreeForFile(
IN LPSTR RootPath,
IN LPSTR InputPathName,
OUT LPSTR OutputPathBuffer
);

功能:从指定目录树中寻找文件

常见的字符串处理函数有:

StrChr ,StrChrI,StrCmpN,StrCmpNI,StrCSpn,StrCSpnI,StrDup,StrFormatByteSize(字节大小格式化),StrFromTimeInterval,StrIsIntlEqual,StrNCat,StrPBrk,StrRChr,StrRChrI,StrRStrI,StrSpn,StrStr,StrStrI,StrToInt,StrToIntEx(可以讲16进制字符串转换为10进制值),StrTrim(删除收尾空字符串),StrCat,StrCmp,StrCpy,ChrCmpI,

常见的Path处理函数有:

PathAddBackslash,PathAddExtension,PathAppend,PathBuildRoot, PathCanonicalize,PathCombine,PathCompactPath,PathCompactPathEx,PathCommonPrefix,PathFileExists,PathFindExtension,PathFindFileName(类似与basename中后面部分,获取得到整个文件名),PathFindNextComponent(获取得到除盘符外的所有文件名),PathFindOnPath,PathGetArgs,PathGetCharType,PathGetDriveNumber,PathIsDirectory,PathIsFileSpec(仅有文件名部分,不能够包括:和\符号),PathIsPrefix,PathIsRelative,PathIsRoot,PathIsSameRoot,PathIsUNC,PathIsUNCServer,PathIsUNCServerShare,PathIsContentType,PathIsURL,
PathMakePretty,PathMatchSpec,PathParseIconLocation,PathQuoteSpaces,PathRelativePathTo,PathRemoveArgs,PathRemoveBackslash,PathRemoveBlanks,
PathRemoveExtension,PathRemoveFileSpec,PathRenameExtension,PathSearchAndQualify,PathSetDlgItemPath,PathSkipRoot,PathStripPath,
PathStripToRoot,PathUnquoteSpaces,PathMakeSystemFolder,PathUnmakeSystemFolder,PathIsSystemFolder

常见的注册表处理函数有:

SHDeleteEmptyKey,SHDeleteKey,SHDeleteValue,SHGetValue,SHSetValue,SHQueryValueEx,SHEnumKeyEx,SHEnumValue,SHQueryInfoKey,
SHRegCreateUSKey,SHRegOpenUSKey,SHRegQueryUSValue,SHRegWriteUSValue,SHRegDeleteUSValue,SHRegDeleteEmptyUSKey,SHRegEnumUSKey,
SHRegEnumUSValue,SHRegQueryInfoUSKey,SHRegGetUSValue,SHRegSetUSValue,SHRegGetBoolUSValue,SHOpenRegStream,

其他函数

创建GDI帮助函数

SHCreateShellPalette

DLLGETVERSIONPROC指针,用来获取dll的版本号

和DllInstall原型定义

STDAPI DllInstall(BOOL bInstall, LPCWSTR pszCmdLine);

文章来源:https://blog.csdn.net/u011135902/article/details/78672645

猜你喜欢

转载自blog.csdn.net/analogous_love/article/details/86680582