我用CFile类创建一个新文件,可是有时在程序中指定的路径有时不存在就不能成功创建,请问哪个API函数可以判断制定路径是否存在?
另外,我不希望创建同名的文件时覆盖原文件,所以希望能在创建之前先判断制定文件是否已经存在,是否有这样的API函数?

解决方案 »

  1.   

    可以用DWORD dwAttrib = GetFileAttributes(lpFileName);来快速判断文件或者文件夹是否存在。
    if(dwAttrib == 0xFFFFFFFF) 文件不存在。
    else if(dwAttrib & FILE_ATTRIBUTE_DIRECTORY) 是文件夹。
      

  2.   

    我不知道有没有这样的函数,但是你既然是创建一个文件,肯定要保存。可以先构造一个保存文件对话框,比如:

    CFileDialog fileDlg(FALSE);
    fileDlg.m_ofn.lpstrTitle="我的文件保存对话框";
    fileDlg.m_ofn.lpstrFilter="Text Files(*.txt)\0*.txt\0All Files(*.*)\0*.*\0\0";
    fileDlg.m_ofn.lpstrDefExt="txt";
    //然后就可以创建文件等操作
    if(IDOK==fileDlg.DoModal())
    {
        CFile file(fileDlg.GetFileName(),CFile::modeWrite | CFile::modeCreate | CFile::typeBinary);
    file.Write......
    file.close;
    }
    这样既能判断指定的路径存不存在,也可以避免创建同名的文件。呵呵,不知道对不对lz的心思
      

  3.   

    使用PathFileExist()判断指定的文件时候存在,
    或是
    FindFirstFile()
    FindNextFile().也可以查找指定的文件。