一个简单的问题,关于CreateFile

yxwsbobo 2010-07-20 08:41:56
发现CreateFile 创建文件的时候,如果文件路径不存在就会失败,一点也不智能, 有没有办法创建文件,如果路径不存在就自动创建路径,用CreateDirectory 也是必须一个一个的创建,如果路径不存在也失败

我现在要写个解包软件,所以最好可以自动创建文件路径
...全文
537 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
dvlinker 2010-07-20
  • 打赏
  • 举报
回复

SHCreateDirectoryEx(NULL, _T("C:\\MyClientLog"), NULL);
File _file;
_file.Create(_T("C:\\MyClientLog\\20100719153322.txt"),
GENERIC_WRITE | GENERIC_READ, FILE_SHARE_READ, OPEN_ALWAYS, NULL);

首先调用SHCreateDirectoryEx函数,确保文件所在的目录是存在的,若不存在该函数会自动创建该目录,然后再创建文件就没问题了~
oyljerry 2010-07-20
  • 打赏
  • 举报
回复
一般这种代码放到公共的代码中...这样以后都可以使用
yxwsbobo 2010-07-20
  • 打赏
  • 举报
回复
我只是想这么常用的功能,可能已经提供好了才问一问~~


SHCreateDirectory 或者(EX)版本的 都可以 只是必须绝对路径,不能是相对路径


本身懒得自己写了,看到有人说写 于是就写了...


int CreateDirectoryAlways(PCTSTR szFilePath)
{
TCHAR szTempPath[MAX_PATH];
if(_tcslen(szFilePath) > MAX_PATH)
return FALSE;
_tcscpy(szTempPath,szFilePath);//本身想用 _tcscpy_s 可是 不知道为何 此处调用这个函数会修改 szFilePath 的值.. 见鬼了

for(int i=0,j=0;szTempPath[i]!=0;++i)
if(szTempPath[i] == TEXT('\\'))
{
szTempPath[i] = 0;
CreateDirectory(szTempPath,NULL);
szTempPath[i] = TEXT('\\');
}
CreateDirectory(szTempPath,NULL);

return GetLastError();
}

windows_star 2010-07-20
  • 打赏
  • 举报
回复
你可以去捕捉错误码啊,看看是不是路径错误问题,如果是的话你就递归生成目录不就得了。

你可以自己封装一个函数,逻辑隐藏,下面调用那两个函数。
oyljerry 2010-07-20
  • 打赏
  • 举报
回复
SHCreateDirectory()可以强行创建多级目录,如果没有,就创建
然后自己再判断文件是否存在,CreateFile等创建文件
LZNJ06 2010-07-20
  • 打赏
  • 举报
回复
自动好的代码,就不能怕麻烦,顶了,写好了,贴出来学习学习!
lazy_2010 2010-07-20
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 cnzdgs 的回复:]
SHCreateDirectory
[/Quote]

是 SHCreateDirectoryEx 吧
yuegege 2010-07-20
  • 打赏
  • 举报
回复
自己写
zealand_1 2010-07-20
  • 打赏
  • 举报
回复
帮顶,顶自己写
cnzdgs 2010-07-20
  • 打赏
  • 举报
回复
SHCreateDirectory
jameshooo 2010-07-20
  • 打赏
  • 举报
回复
搞VC的还怕这点麻烦?写一段递归代码,以后就不用再写了
昨夜无风 2010-07-20
  • 打赏
  • 举报
回复
顶楼上,可以查看错误码!!
fishion 2010-07-20
  • 打赏
  • 举报
回复
这个是检查路径的,其实你可以用CreateFile来创建文件的后就用if(2 == GetLastError())那文件就不存在
花熊 2010-07-20
  • 打赏
  • 举报
回复
楼主也可以自己写个递归函数,一级级生成,
fishion 2010-07-20
  • 打赏
  • 举报
回复
用PathIsDirectory来检查
花熊 2010-07-20
  • 打赏
  • 举报
回复
PathFileExists来判断文件路径是否存在,不行用MakeSureDirectoryPathExists创建!

16,472

社区成员

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

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

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