判断路径文件夹是否存在,不存在创建

来源:互联网 发布:女性就业歧视知乎 编辑:程序博客网 时间:2024/05/17 10:40
C/C++判断一个文件是否存在
1.
判断路径文件夹是否存在,不存在创建bool isExistFile(const char *pszFileName){
    FILE 
*fp = fopen(pszFileName, "rb");
    
if(fp == NULL)
        
return false;
    fclose(fp);
    
return true;
}

判断路径文件夹是否存在,不存在创建bool isExistFile(const char *pszFileName){
        fstream file;
        file.open(pszFileName,ios::
in);
        
if(!file)
            
return false;

        
return true;
    }

2.利用 c 语言的库的办法:

函数名: access

// crt_access.c
#include  <io.h>
#include  
<stdio.h>
#include  
<stdlib.h>

int main( void )
判断路径文件夹是否存在,不存在创建
{
判断路径文件夹是否存在,不存在创建   

   
if(_access( "crt_ACCESS.C"0 )) != -1 )
判断路径文件夹是否存在,不存在创建   
{
      printf( 
"File crt_ACCESS.C exists\n" );
判断路径文件夹是否存在,不存在创建      

判断路径文件夹是否存在,不存在创建      

      
if(_access( "crt_ACCESS.C"2 )) == -1 )
         printf( 
"File crt_ACCESS.C does not have write permission\n" );
   }

}

3.用FindFirstFile


#include <windows.h>
#include 
<string> 
#include 
<vector>
using namespace std; 

// 核查目录,若目录不存在,创建目录
bool FindOrCreateDirectory( const char* pszPath )
判断路径文件夹是否存在,不存在创建
{
    WIN32_FIND_DATA fd;
    HANDLE hFind 
= ::FindFirstFile( pszPath, &fd );
    
whilehFind != INVALID_HANDLE_VALUE )
判断路径文件夹是否存在,不存在创建    
{
        
if fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY )
            
return true;
    }


    
if !::CreateDirectory( pszPath, NULL )
判断路径文件夹是否存在,不存在创建    
{
        
char szDir[MAX_PATH];
        sprintf_s( szDir, 
sizeof(szDir), "创建目录[%s]失败,请检查权限"pszPath );
        ::MessageBox( NULL, szDir, 
"创建目录失败"MB_OK|MB_ICONERROR );
        
return false;
    }


    
return true;
}


// 遍历目录
bool CheckDirectory( char* pszPath )
判断路径文件夹是否存在,不存在创建
{
    vector
< std::string > vtPath;

    
const char* sep = "\\/";
    
char* next_token;
    
char* token =  strtok_s( pszPath, sep, &next_token);
    
whiletoken != NULL )
判断路径文件夹是否存在,不存在创建    
{
        vtPath.push_back( token );
        token 
= strtok_s(NULL, sep, &next_token);
    }


    
if vtPath.size() > 0 )
判断路径文件夹是否存在,不存在创建    
{
        
if vtPath[0== "." )
            vtPath.erase( vtPath.begin() );
    }


    
// 核查所有路径是否存在
    std::string strCurPath;
    
forsize_t = 0 < (int)vtPath.size(); ++)
判断路径文件夹是否存在,不存在创建    
{
        strCurPath 
+= vtPath[i];
        strCurPath 
+= '\\';

        
if !FindOrCreateDirectory( strCurPath.c_str() )
判断路径文件夹是否存在,不存在创建        
{
            
return false;
        }

    }


    
return true;
}



int main() 
判断路径文件夹是否存在,不存在创建

    
char szPath[MAX_PATH] = "./main\\test\\hello/jump\\test\\";
    CheckDirectory( szPath );
    

    system(
"pause");
    
return 0
}
 
0 0