创建文件夹函数如下:
bool CreateDir(char *strDir)
{
if(::_chdir(strDir)!=0) //不存在则创建
{
if(::_mkdir(strDir)==0) //创建成功
{
return true;
}
else //创建失败
{
return false;
}
}
else
{
return true;
}
}
调用如下:
CreateDir(char *strDir)
pLocalFile.Open("A\\html.txt",CFile::modeCreate | CFile::modeWrite | CFile::typeBinary)比如我要创建文件夹:A,如果刚开始没有A,则创建成功后,
第一次执行如下语句,打开“A\\html.txt”成功。
pLocalFile.Open("A\\html.txt",CFile::modeCreate | CFile::modeWrite | CFile::typeBinary)
但是如果是已经存在了A文件夹,就打开"A\\html.txt"失败,
如果是已经存在了A文件夹,并且没有调用CreateDir函数,则都能代开。
这是为什么呢?与CreateDir这个函数有什么关系吗
bool CreateDir(char *strDir)
{
if(::_chdir(strDir)!=0) //不存在则创建
{
if(::_mkdir(strDir)==0) //创建成功
{
return true;
}
else //创建失败
{
return false;
}
}
else
{
return true;
}
}
调用如下:
CreateDir(char *strDir)
pLocalFile.Open("A\\html.txt",CFile::modeCreate | CFile::modeWrite | CFile::typeBinary)比如我要创建文件夹:A,如果刚开始没有A,则创建成功后,
第一次执行如下语句,打开“A\\html.txt”成功。
pLocalFile.Open("A\\html.txt",CFile::modeCreate | CFile::modeWrite | CFile::typeBinary)
但是如果是已经存在了A文件夹,就打开"A\\html.txt"失败,
如果是已经存在了A文件夹,并且没有调用CreateDir函数,则都能代开。
这是为什么呢?与CreateDir这个函数有什么关系吗
pLocalFile.Open("A\\html.txt",CFile::modeCreate | CFile::modeWrite | CFile::typeBinary)
改成
CString str;
str = strDir;
str += "\\A\\html.txt";
pLocalFile.Open(str,CFile::modeCreate | CFile::modeWrite | CFile::typeBinary)
pLocalFile.Open("A\\html.txt",CFile::modeCreate|CFile::modeWrite |CFile::typeBinary)
但是如果没有调用CreateDir(char *strDir),则第二条语句
pLocalFile.Open("A\\html.txt",CFile::modeCreate|CFile::modeWrite|CFile::typeBinary)
打开都是正常的,这也说明路径:"A\\html.txt"没问题啊,
_chdir :Change the current working directory.
该函数的功能可不是简单的检测文件夹存不存在,而是将指定的文件夹作为当前文件夹。
当该文件夹存在的时候,你都改变了当前文件夹了,那么怎么可能用原先的相对路径找到A\html.txt呢?
你可以用绝对路径指明A\html.txt做测试来验证这一点。
当然解决方法还是要你自己用GetModuleFileName得到当前Exe路径,再自己拼凑一个绝对路径的方案最佳。