创建文件夹函数如下:
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这个函数有什么关系吗

解决方案 »

  1.   

    怀疑是路径问题,建议楼主
    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) 
      

  2.   

    CreateDir(char *strDir) 
    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"没问题啊,
      

  3.   

    绝对是路径问题
    _chdir :Change the current working directory.
    该函数的功能可不是简单的检测文件夹存不存在,而是将指定的文件夹作为当前文件夹。
    当该文件夹存在的时候,你都改变了当前文件夹了,那么怎么可能用原先的相对路径找到A\html.txt呢?
    你可以用绝对路径指明A\html.txt做测试来验证这一点。
    当然解决方法还是要你自己用GetModuleFileName得到当前Exe路径,再自己拼凑一个绝对路径的方案最佳。