转:http://blog.sina.com.cn/s/blog_60fc9f140100rd2z.html
MSDN上有关Path的函数说明:http://msdn.microsoft.com/en-us/library/windows/desktop/bb773559(v=vs.85).aspx
Windows中有一个Shlwapi.dll文件,包含了大量的Windows字符串处理方法,这些方法,在通常的程序应用中,经常会用到,有一部分处理方法,在CRuntime中也存在,但不方便使用。有一部分函数,也有相关的Windows API函数,如StrCpy对应的lstrcpy之类的字符串处理函数。从Shlwapi名称看,这个应该是Windows的Shell API函数。
使用方法:
1. 加入#include <shlwapi.h>.
2. 在project(工程)->setting(设置)->link(连接)下objiect/library modules(对象/库模块)中加入shlwapi.lib
不管怎么说,Shlwapi.dll提供了大量处理Windows字符串的方法,这些方法,可以让你工作更加简便,通常,我们需要获取一个文件名的后缀名,使用MFC的CString查找字符串可以获取,但是麻烦,每个人的实现都不一样,用Shlwapi中提供的函数PathFindExtension直接就返回一个后缀名的指针。
Shlwapi主要分为三类函数,第一类是字符串处理函数,通常以Str开头,第二类是路径或者文件夹处理函数,通常以Path开头,第三类是注册表处理函数,通常以SH开头。每一类函数,都要区分A和W。
常见的字符串处理函数有:
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);
windows路径操作API函数
转自:http://www.360doc.com/content/11/0224/11/61151_95655307.shtml
路径截断与合并函数
PathRemoveArgs
去除路径的参数
PathRemoveBackslash
去除路径最后的反斜杠“\”
PathAddBackslash
在路径最后加上反斜杠“\”
PathRemoveBlanks
去除路径前后的空格
PathAddExtension
在文件路径后面加上扩展名
PathRemoveExtension
去除文件路径扩展名
PathRenameExtension
更改文件路径扩展名
PathRemoveFileSpec
去除文件名,得到目录
PathUnquoteSpaces
去除路径中的首尾空格
PathQuoteSpaces
判断路径中是否有空格,有的话,就是用“”引号把整个路径包含起来
PathAppend
将一个路径追加到另一个路径后面
PathCombine
合并两个路径
PathSkipRoot
去掉路径中的磁盘符或UNC部分。
PathStripPath
去掉路径中的目录部分,得到文件名。
PathStripToRoot
去掉路径的文件部分,得到根目录。
PathCompactPath
根据像素值生成符合长度的路径。
如原始路径: C:\path1\path2\sample.txt
根据120像素截断后为: C:\pat...\sample.txt
根据25像素截断后为: ...\sample.txt
PathCompactPathEx
根据字符个数来生成符合长度的路径。
PathSetDlgItemPath
将路径数据设置到对话框的子控件上。
PathUndecorate
去除路径中的修饰——具体还没看明白,MSDN的例子只是去掉了括号。
PathUnExpandEnvStrings
将路径中部分数据替换为系统环境变量格式
路径查找比较函数
PathFindOnPath
从路径中查找路径
PathFindExtension
查找路径的扩展名
PathFindFileName
获取路径的文件名
PathFindNextComponent
查找匹配路径(不太熟悉)
PathFindSuffixArray
查找给定的文件名是否有给定的后缀。
PathGetArgs
获取路径参数
PathGetCharType
获取路径字符类型
PathGetDriveNumber
根据逻辑盘符返回驱动器序号
路径转换函数
PathRelativePathTo
创建一个路径到另一个路径的相对路径。
PathResolve
将一个相对路径或绝对路径转换为一个合格的路径,这个理解起来比较拗口。
PathCanonicalize
规范化路径。将格式比较乱的路径整理成规范的路径格式。
PathBuildRoot
根据给定的磁盘序号创建根目录路径
CreateDirectory
创建目录
GetShortPathName
将长路径转为8.3格式的短路径格式
GetLongPathName
将短路径格式转为长路径。
PathGetShortPath
将长路径转为短路径格式(8.3格式)
PathCreateFromUrl
将URL路径转为MS-DOS格式
PathMakePretty
把路径全部转为小写,增加可读性。
PathMakeSystemFolder
给路径增加系统属性
PathUnmakeSystemFolder
去除路径中的系统属性。
PathMakeUniqueName
从模板创建统一的路径格式——没用过,不熟悉
PathProcessCommand
生成一个可执行的路径,比如有参数的,会自动将路径用“”包含。
这在ShellExecute中比较有用。
路径验证函数
PathCleanupSpec
去除路径中不合法的字符
PathCommonPrefix
比较并提取两个路径相同的前缀
PathFileExists
验证路径是否存在
PathMatchSpec
判断路径是否匹配制定的扩展名。
PathIsDirectory
判断路径是否是一个有效的目录
PathIsFileSpec
验证路径是否一个文件名(有可能是一个路径)
PathIsExe
验证路径是否是可执行文件。注意:不仅仅是.exe,还有.bat,.com,.src等
PathIsRoot
路径是否为根路径
PathIsRelative
判断路径是否是相对路径
PathIsContentType
检测文件是否为制定类型。
例如:PathIsContentType( “hello.txt” , “text/plain” ) 返回TRUE
PathIsContentType( “hello.txt” , “image/gif” ) 返回FALSE
PathIsHTMLFile
判断路径是否是html文件类型——根据系统注册类型判断。
PathIsLFNFileSpec
判断路径是否是长路径格式
PathIsNetworkPath
判断路径是否是一个网络路径。
PathIsPrefix
判断路径是否含有指定前缀
PathIsSameRoot
判断路径是否有相同根目录
PathIsSlow
判断路径是否是一个高度延迟的网络连接——我也不太明白是啥意思。
PathIsSystemFolder
判断路径是否有系统属性(属性可以自己设定)
PathIsUNC
路径是否是UNC格式(网络路径)
PathIsUNCServer
路径是否是UNC服务器
PathIsUNCServerShare
路径是否仅仅是UNC的共享路径格式
PathIsURL
路径是否是http格式。
PathYetAnotherMakeUniqueName
基于已存在的文件,自动创建一个唯一的文件名。比较有用,比如存在“新建文件”,此函数会创建文件名“新建文件(2)”。
================================================================================
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)
功能:检查路径是否是相对路径
转:http://blog.sina.com.cn/s/blog_60fc9f140100rd2z.html
MSDN上有关Path的函数说明:http://msdn.microsoft.com/en-us/library/windows/desktop/bb773559(v=vs.85).aspx
Windows中有一个Shlwapi.dll文件,包含了大量的Windows字符串处理方法,这些方法,在通常的程序应用中,经常会用到,有一部分处理方法,在CRuntime中也存在,但不方便使用。有一部分函数,也有相关的Windows API函数,如StrCpy对应的lstrcpy之类的字符串处理函数。从Shlwapi名称看,这个应该是Windows的Shell API函数。
使用方法:
1. 加入#include <shlwapi.h>.
2. 在project(工程)->setting(设置)->link(连接)下objiect/library modules(对象/库模块)中加入shlwapi.lib
不管怎么说,Shlwapi.dll提供了大量处理Windows字符串的方法,这些方法,可以让你工作更加简便,通常,我们需要获取一个文件名的后缀名,使用MFC的CString查找字符串可以获取,但是麻烦,每个人的实现都不一样,用Shlwapi中提供的函数PathFindExtension直接就返回一个后缀名的指针。
Shlwapi主要分为三类函数,第一类是字符串处理函数,通常以Str开头,第二类是路径或者文件夹处理函数,通常以Path开头,第三类是注册表处理函数,通常以SH开头。每一类函数,都要区分A和W。
常见的字符串处理函数有:
StrChr ,StrChrI,StrCmpN,StrCmpNI,StrCSpn,StrCSpnI,StrDup,StrFormatByteSize(字节大小格式化),StrFromTimeInterval,StrIsIntlEqual,StrNCat,StrPBrk,StrRChr,
常见的Path处理函数有:
PathAddBackslash,PathAddExtension,PathAppend,PathBuildRoot, PathCanonicalize,PathCombine,PathCompactPath,PathCompactPathEx,PathCommonPrefix,PathFileExists,PathFindExtension,PathFindFileName(类似与basename中后面部分,获取得到整个文件名),
PathMakePretty,PathMatchSpec,PathParseIconLocation,PathQuoteSpaces,PathRelativePathTo,PathRemoveArgs,PathRemoveBackslash,PathRemoveBlanks,
PathRemoveExtension,PathRemoveFileSpec,PathRenameExtension,PathSearchAndQualify,PathSetDlgItemPath,PathSkipRoot,PathStripPath,
常见的注册表处理函数有:
SHDeleteEmptyKey,SHDeleteKey,
SHRegCreateUSKey,SHRegOpenUSKey,SHRegQueryUSValue,SHRegWriteUSValue,SHRegDeleteUSValue,SHRegDeleteEmptyUSKey,SHRegEnumUSKey,
SHRegEnumUSValue,SHRegQueryInfoUSKey,SHRegGetUSValue,SHRegSetUSValue,SHRegGetBoolUSValue,SHOpenRegStream,
其他函数
创建GDI帮助函数
SHCreateShellPalette
DLLGETVERSIONPROC指针,用来获取dll的版本号
和DllInstall原型定义
STDAPI DllInstall(BOOL bInstall, LPCWSTR pszCmdLine);
windows路径操作API函数
转自:http://www.360doc.com/content/11/0224/11/61151_95655307.shtml
路径截断与合并函数 |
|
|
|
PathRemoveArgs | 去除路径的参数 |
PathRemoveBackslash | 去除路径最后的反斜杠“\” |
PathAddBackslash | 在路径最后加上反斜杠“\” |
PathRemoveBlanks | 去除路径前后的空格 |
PathAddExtension | 在文件路径后面加上扩展名 |
PathRemoveExtension | 去除文件路径扩展名 |
PathRenameExtension | 更改文件路径扩展名 |
PathRemoveFileSpec | 去除文件名,得到目录 |
PathUnquoteSpaces | 去除路径中的首尾空格 |
PathQuoteSpaces | 判断路径中是否有空格,有的话,就是用“”引号把整个路径包含起来 |
|
|
PathAppend | 将一个路径追加到另一个路径后面 |
PathCombine | 合并两个路径 |
|
|
PathSkipRoot | 去掉路径中的磁盘符或UNC部分。 |
PathStripPath | 去掉路径中的目录部分,得到文件名。 |
PathStripToRoot | 去掉路径的文件部分,得到根目录。 |
|
|
PathCompactPath | 根据像素值生成符合长度的路径。 如原始路径: C:\path1\path2\sample.txt 根据120像素截断后为: C:\pat...\sample.txt |
PathCompactPathEx | 根据字符个数来生成符合长度的路径。 |
|
|
PathSetDlgItemPath | 将路径数据设置到对话框的子控件上。 |
PathUndecorate | 去除路径中的修饰——具体还没看明白,MSDN的例子只是去掉了括号。 |
PathUnExpandEnvStrings | 将路径中部分数据替换为系统环境变量格式 |
路径查找比较函数 |
|
PathFindOnPath | 从路径中查找路径 |
PathFindExtension | 查找路径的扩展名 |
PathFindFileName | 获取路径的文件名 |
PathFindNextComponent | 查找匹配路径(不太熟悉) |
PathFindSuffixArray | 查找给定的文件名是否有给定的后缀。 |
PathGetArgs | 获取路径参数 |
PathGetCharType | 获取路径字符类型 |
PathGetDriveNumber | 根据逻辑盘符返回驱动器序号 |
|
|
路径转换函数 |
|
PathRelativePathTo | 创建一个路径到另一个路径的相对路径。 |
PathResolve | 将一个相对路径或绝对路径转换为一个合格的路径,这个理解起来比较拗口。 |
PathCanonicalize | 规范化路径。将格式比较乱的路径整理成规范的路径格式。 |
PathBuildRoot | 根据给定的磁盘序号创建根目录路径 |
CreateDirectory | 创建目录 |
|
|
GetShortPathName | 将长路径转为8.3格式的短路径格式 |
GetLongPathName | 将短路径格式转为长路径。 |
PathGetShortPath | 将长路径转为短路径格式(8.3格式) |
PathCreateFromUrl | 将URL路径转为MS-DOS格式 |
PathMakePretty | 把路径全部转为小写,增加可读性。 |
PathMakeSystemFolder | 给路径增加系统属性 |
PathUnmakeSystemFolder | 去除路径中的系统属性。 |
PathMakeUniqueName | 从模板创建统一的路径格式——没用过,不熟悉 |
PathProcessCommand | 生成一个可执行的路径,比如有参数的,会自动将路径用“”包含。 这在ShellExecute中比较有用。 |
路径验证函数 |
|
PathCleanupSpec | 去除路径中不合法的字符 |
PathCommonPrefix | 比较并提取两个路径相同的前缀 |
PathFileExists | 验证路径是否存在 |
PathMatchSpec | 判断路径是否匹配制定的扩展名。 |
PathIsDirectory | 判断路径是否是一个有效的目录 |
PathIsFileSpec | 验证路径是否一个文件名(有可能是一个路径) |
PathIsExe | 验证路径是否是可执行文件。注意:不仅仅是.exe,还有.bat,.com,.src等 |
PathIsRoot | 路径是否为根路径 |
PathIsRelative | 判断路径是否是相对路径 |
PathIsContentType | 检测文件是否为制定类型。 例如:PathIsContentType( “hello.txt” , “text/plain” ) 返回TRUE PathIsContentType( “hello.txt” , “image/gif” ) 返回FALSE |
PathIsHTMLFile | 判断路径是否是html文件类型——根据系统注册类型判断。 |
PathIsLFNFileSpec | 判断路径是否是长路径格式 |
PathIsNetworkPath | 判断路径是否是一个网络路径。 |
PathIsPrefix | 判断路径是否含有指定前缀 |
PathIsSameRoot | 判断路径是否有相同根目录 |
PathIsSlow | 判断路径是否是一个高度延迟的网络连接——我也不太明白是啥意思。 |
PathIsSystemFolder | 判断路径是否有系统属性(属性可以自己设定) |
PathIsUNC | 路径是否是UNC格式(网络路径) |
PathIsUNCServer | 路径是否是UNC服务器 |
PathIsUNCServerShare | 路径是否仅仅是UNC的共享路径格式 |
PathIsURL | 路径是否是http格式。 |
PathYetAnotherMakeUniqueName | 基于已存在的文件,自动创建一个唯一的文件名。比较有用,比如存在“新建文件”,此函数会创建文件名“新建文件(2)”。 |
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)
功能:检查路径是否是相对路径