获取文件的绝对路径
来源:互联网 发布:软件测试需要linux 编辑:程序博客网 时间:2024/04/25 15:07
1.先通过函数GetModuleFileName获取执行程序的绝对路径。
TCHAR szPath[ MAX_PATH ] = {0};
GetModuleFileName( NULL, szPath, MAX_PATH );
其中GetModuleFileName函数为windows的API函数,使用的时候需要包含windows.h的头文件;MAX_PATH是一个宏定义,值为260。执行完GetModuleFileName函数之后,szPath数组中保存的就是执行程序当前的绝对路径。
假设执行程序xp.exe的绝对路径为C:\Program Files\Dll\xp.exe,那么szPath数组中存储的值就是C:\Program Files\Dll\xp.exe。
2.根据执行程序的绝对路径得到需要访问的文件的绝对路径。
这里需要用到_tcsrchr函数来将获取到的执行程序的绝对路径中的执行程序的名称去掉。即将上面路径C:\Program Files\Dll\xp.exe中的xp.exe去掉,只得到C:\Program Files\Dll\。方法如下:
(_tcsrchr(szPath,_T('\\')))[1] = 0;
注:_tcsrchr包含在头文件tchar.h中。
3.将要访问的文件的名称添加到已经得到的路径中。
假设需要访问的文件是1.txt,那么如下:
CString strPath = szPath;
strPath = strPath + "1.txt";
在非MFC中,CString包含在atlstr.h头文件中,在MFC中包含在cstring.h的头文件中。
程序整体如下:
TCHAR szPath[ MAX_PATH ] = {0};
if ( GetModuleFileName( NULL, szPath,MAX_PATH ) )
{
(_tcsrchr(szPath,_T('\\')))[1] = 0;
}
CString strPath = szPath;
strPath = strPath + _T("1.txt");
或者
CString Result, sPath;
Result = _T("");
TCHAR sFileName[256];
GetModuleFileName(AfxGetInstanceHandle(), sFileName, 255); // 取得当前可执行文件的路径,保存在sFileName中
sPath = sFileName;
int index = sPath.ReverseFind('\\'); // 逆向查找指定字符
sPath = sPath.Left(index);
Result = sPath + _T("\\1.txt");
FROM: http://blog.sina.com.cn/s/blog_780976a001015k1q.html
【说明】关于_tcsrchr一行代码
_tcsrchr
查找字符串中某个字符最后一次出现的位置
两个参数
第一个参数:字符串
第二个参数:查找的字符
返回值:指向最后一次在字符串中出现的该字符的指针,如果要查找的字符再串中没有出现,则返回NULL。
今天看代码,突然看到了一句让我犯蒙的,一时间还没反应过来。
代码是这样写的: *_tcsrchr( szPath, _T( '\\' ) ) = 0;
仔细推敲了一下,这句代码其实可以分解为两句。 _tcsrchr( szPath, _T( '\\' ) )查找szPath中最后一个\所在的位置,并返回\以后的字符串。
*是取值操作,返回指针所指向地址的值,赋为0也就是将后面的字符串截断.
还有一种写法,效果是一样的(_tcsrchr(szPath, _T('\\')))[1] = 0;
from:http://blog.csdn.net/zuiyuezhou888/article/details/7852472
- 获取文件的绝对路径
- 获取文件的绝对路径
- 获取文件的绝对路径
- 获取文件的绝对路径
- 获取文件的绝对路径
- C#获取文件的绝对路径
- C#获取文件的绝对路径
- 获取当前文件的绝对路径
- linux 获取文件的绝对路径
- PHP获取文件的绝对路径
- 如何获取文件的绝对路径
- MFC获取文件的绝对路径
- 获取类的class文件的绝对路径
- 获取类的class文件的绝对路径
- JavaScript 获取上传文件的本地绝对路径
- 从对象获取class文件的绝对路径
- ie9下获取上传文件的绝对路径
- 获取某个绝对路径下的文件名字
- iOS开发ASIHttpRequest创建和执行request
- matlab 中eps的用法
- JAVA File Lock
- 归并排序
- Windows操作系统产品名与内部版本号的对应
- 获取文件的绝对路径
- MyBatis使用Generator自动生成代码
- PHP中的cookie与session
- NSArray中的最大值和最小值
- 博弈总结
- sencha touch + PhoneGap(cordova) 使用 adt eclipse进行打包
- Java的HashMap和HashTable
- windows server 2012 活动目录部署系列(九)域用户与组用户的管理
- [bash]if、test命令[ ]以及case命令