发现CreateFile 创建文件的时候,如果文件路径不存在就会失败,一点也不智能, 有没有办法创建文件,如果路径不存在就自动创建路径,用CreateDirectory 也是必须一个一个的创建,如果路径不存在也失败 我现在要写个解包软件,所以最好可以自动创建文件路径

解决方案 »

  1.   

    PathFileExists来判断文件路径是否存在,不行用MakeSureDirectoryPathExists创建!
      

  2.   

    这个是检查路径的,其实你可以用CreateFile来创建文件的后就用if(2 == GetLastError())那文件就不存在
      

  3.   


    是 SHCreateDirectoryEx 吧
      

  4.   

    SHCreateDirectory()可以强行创建多级目录,如果没有,就创建
    然后自己再判断文件是否存在,CreateFile等创建文件
      

  5.   

    我只是想这么常用的功能,可能已经提供好了才问一问~~
    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();
    }
      

  6.   


    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函数,确保文件所在的目录是存在的,若不存在该函数会自动创建该目录,然后再创建文件就没问题了~