创建文件夹,奇怪问题?

hzy694358 2009-12-03 04:17:39
创建文件夹函数如下:
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这个函数有什么关系吗
...全文
123 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
w_anthony 2009-12-05
  • 打赏
  • 举报
回复
绝对是路径问题
_chdir :Change the current working directory.
该函数的功能可不是简单的检测文件夹存不存在,而是将指定的文件夹作为当前文件夹。
当该文件夹存在的时候,你都改变了当前文件夹了,那么怎么可能用原先的相对路径找到A\html.txt呢?
你可以用绝对路径指明A\html.txt做测试来验证这一点。
当然解决方法还是要你自己用GetModuleFileName得到当前Exe路径,再自己拼凑一个绝对路径的方案最佳。
hzy694358 2009-12-05
  • 打赏
  • 举报
回复
没人知道吗
hzy694358 2009-12-04
  • 打赏
  • 举报
回复
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"没问题啊,
fandh 2009-12-03
  • 打赏
  • 举报
回复
因为已经有路径了,不需要创建路径,则可能工作路径是其它的路径;如果可以的话,楼主在上面加工作路径是你要创建的路径,那么,就不用改了!
fandh 2009-12-03
  • 打赏
  • 举报
回复
怀疑是路径问题,建议楼主
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)

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧