电子大神的日记本,供应链专家的功夫茶盘,在这里记录、分享与共鸣。

登录以开始

Window路径相关的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****

****);****

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

 

调用函数的例子如下:
#001 //获取当前程序所在路径。
//#003  void TestGetExePath(void)
#004  {
#005        //
#006        const int nBufSize = 512;
#007        TCHAR chBuf[nBufSize];
#008        ZeroMemory(chBuf,nBufSize);
#009
#010        //获取当前执行文件的路径。
#011        if (GetModuleFileName(NULL,chBuf,nBufSize))
#012        {
#013              //输出带文件名称路径。
#014              OutputDebugString(chBuf);
#015              OutputDebugString(_T("\r\n"));
#016
#017              //获取文件路径。
#018              TCHAR* lpStrPath = chBuf;
#019              PathRemoveFileSpec(lpStrPath);
#020              OutputDebugString(lpStrPath);
#021              OutputDebugString(_T("\r\n"));
#022        }
#023
#024  }
输出的结果如下:
g:\work\windows_api\wincpp2\debug\WinCpp.exe
g:\work\windows_api\wincpp2\debug

博主
hongqi1029@126.com
天乐工作坞(hongqi1029@126.com)
穷者独善其身 达则兼济天下 假如你正在失去悠闲,当心,也许你正在失去灵魂 <sp
点击跳转