html5中文学习网

您的位置: 首页 > 网站及特效实例 > jquery特效 » 正文

C/C++中如何判断某一文件或目录是否存在_编程语言综合

[ ] 已经帮助:人解决问题
以下文章是对C/C++中判断某一文件或目录是否存在的实现代码进行了详细的分析介绍,需要的朋友可以参考下
 

1.C++很简单的一种办法:2nyHTML5中文学习网 - HTML5先行者学习网
2nyHTML5中文学习网 - HTML5先行者学习网

复制代码 代码如下:
2nyHTML5中文学习网 - HTML5先行者学习网
#include <iostream>2nyHTML5中文学习网 - HTML5先行者学习网
#include <fstream>2nyHTML5中文学习网 - HTML5先行者学习网
using namespace std;2nyHTML5中文学习网 - HTML5先行者学习网
#define FILENAME "stat.dat"2nyHTML5中文学习网 - HTML5先行者学习网
int main()2nyHTML5中文学习网 - HTML5先行者学习网
{2nyHTML5中文学习网 - HTML5先行者学习网
     fstream _file;2nyHTML5中文学习网 - HTML5先行者学习网
     _file.open(FILENAME,ios::in);2nyHTML5中文学习网 - HTML5先行者学习网
     if(!_file)2nyHTML5中文学习网 - HTML5先行者学习网
     {2nyHTML5中文学习网 - HTML5先行者学习网
         cout<<FILENAME<<"没有被创建";2nyHTML5中文学习网 - HTML5先行者学习网
      }2nyHTML5中文学习网 - HTML5先行者学习网
      else2nyHTML5中文学习网 - HTML5先行者学习网
      {2nyHTML5中文学习网 - HTML5先行者学习网
          cout<<FILENAME<<"已经存在";2nyHTML5中文学习网 - HTML5先行者学习网
      }2nyHTML5中文学习网 - HTML5先行者学习网
      return 0;2nyHTML5中文学习网 - HTML5先行者学习网
}

2nyHTML5中文学习网 - HTML5先行者学习网
2.利用 c 语言的库的办法: 2nyHTML5中文学习网 - HTML5先行者学习网
函数名: access 2nyHTML5中文学习网 - HTML5先行者学习网
功  能: 确定文件的访问权限 2nyHTML5中文学习网 - HTML5先行者学习网
用  法: int access(const char *filename, int amode); 2nyHTML5中文学习网 - HTML5先行者学习网
以前一直没用过这个函数,今天调试程序发现了这个函数,感觉挺好用,尤其是判断一个文件或文件夹是否存在的时候,用不着再find了,文件的话还可以检测读写权限,文件夹的话则只能判断是否存在,下面摘自MSDN:2nyHTML5中文学习网 - HTML5先行者学习网
int _access( const char *path, int mode );2nyHTML5中文学习网 - HTML5先行者学习网
Return Value2nyHTML5中文学习网 - HTML5先行者学习网
Each of these functions returns 0 if the file has the given mode. The function returns –1 if the named file does not exist or is not accessible in the given mode; in this case, errno is set as follows:2nyHTML5中文学习网 - HTML5先行者学习网
EACCES2nyHTML5中文学习网 - HTML5先行者学习网
Access denied: file's permission setting does not allow specified access.2nyHTML5中文学习网 - HTML5先行者学习网
ENOENT2nyHTML5中文学习网 - HTML5先行者学习网
Filename or path not found.2nyHTML5中文学习网 - HTML5先行者学习网
Parameters2nyHTML5中文学习网 - HTML5先行者学习网
path2nyHTML5中文学习网 - HTML5先行者学习网
File or directory path2nyHTML5中文学习网 - HTML5先行者学习网
mode2nyHTML5中文学习网 - HTML5先行者学习网
Permission setting2nyHTML5中文学习网 - HTML5先行者学习网
Remarks2nyHTML5中文学习网 - HTML5先行者学习网
When used with files, the _access function determines whether the specified file exists and can be accessed as specified by the value of mode. When used with directories, _access determines only whether the specified directory exists; in Windows NT, all directories have read and write access.2nyHTML5中文学习网 - HTML5先行者学习网
mode Value            Checks File For 2nyHTML5中文学习网 - HTML5先行者学习网
00                              Existence only 2nyHTML5中文学习网 - HTML5先行者学习网
02                              Write permission 2nyHTML5中文学习网 - HTML5先行者学习网
04                              Read permission 2nyHTML5中文学习网 - HTML5先行者学习网
06                              Read and write permission2nyHTML5中文学习网 - HTML5先行者学习网
Example2nyHTML5中文学习网 - HTML5先行者学习网

复制代码 代码如下:
2nyHTML5中文学习网 - HTML5先行者学习网
/* ACCESS.C: This example uses _access to check the2nyHTML5中文学习网 - HTML5先行者学习网
 * file named "ACCESS.C" to see if it exists and if2nyHTML5中文学习网 - HTML5先行者学习网
 * writing is allowed.2nyHTML5中文学习网 - HTML5先行者学习网
 */2nyHTML5中文学习网 - HTML5先行者学习网
#include  <io.h>2nyHTML5中文学习网 - HTML5先行者学习网
#include  <stdio.h>2nyHTML5中文学习网 - HTML5先行者学习网
#include  <stdlib.h>2nyHTML5中文学习网 - HTML5先行者学习网
void main( void )2nyHTML5中文学习网 - HTML5先行者学习网
{2nyHTML5中文学习网 - HTML5先行者学习网
   /* Check for existence */2nyHTML5中文学习网 - HTML5先行者学习网
   if( (_access( "ACCESS.C", 0 )) != -1 )2nyHTML5中文学习网 - HTML5先行者学习网
   {2nyHTML5中文学习网 - HTML5先行者学习网
      printf( "File ACCESS.C exists " );2nyHTML5中文学习网 - HTML5先行者学习网
      /* Check for write permission */2nyHTML5中文学习网 - HTML5先行者学习网
      if( (_access( "ACCESS.C", 2 )) != -1 )2nyHTML5中文学习网 - HTML5先行者学习网
         printf( "File ACCESS.C has write permission " );2nyHTML5中文学习网 - HTML5先行者学习网
   }2nyHTML5中文学习网 - HTML5先行者学习网
}

2nyHTML5中文学习网 - HTML5先行者学习网
OutputFile ACCESS.C existsFile ACCESS.C has write permission 2nyHTML5中文学习网 - HTML5先行者学习网
3.在windows平台下用API函数FindFirstFile(...):2nyHTML5中文学习网 - HTML5先行者学习网
(1)检查文件是否存在:2nyHTML5中文学习网 - HTML5先行者学习网
2nyHTML5中文学习网 - HTML5先行者学习网

复制代码 代码如下:
2nyHTML5中文学习网 - HTML5先行者学习网
#define _WIN32_WINNT 0x04002nyHTML5中文学习网 - HTML5先行者学习网
#include "windows.h"2nyHTML5中文学习网 - HTML5先行者学习网
int2nyHTML5中文学习网 - HTML5先行者学习网
main(int argc, char *argv[])2nyHTML5中文学习网 - HTML5先行者学习网
{2nyHTML5中文学习网 - HTML5先行者学习网
  WIN32_FIND_DATA FindFileData;2nyHTML5中文学习网 - HTML5先行者学习网
  HANDLE hFind;2nyHTML5中文学习网 - HTML5先行者学习网
  printf ("Target file is %s. ", argv[1]);2nyHTML5中文学习网 - HTML5先行者学习网
  hFind = FindFirstFile(argv[1], &FindFileData);2nyHTML5中文学习网 - HTML5先行者学习网
  if (hFind == INVALID_HANDLE_VALUE) {2nyHTML5中文学习网 - HTML5先行者学习网
    printf ("Invalid File Handle. Get Last Error reports %d ", GetLastError ());2nyHTML5中文学习网 - HTML5先行者学习网
  } else {2nyHTML5中文学习网 - HTML5先行者学习网
    printf ("The first file found is %s ", FindFileData.cFileName);2nyHTML5中文学习网 - HTML5先行者学习网
    FindClose(hFind);2nyHTML5中文学习网 - HTML5先行者学习网
  }2nyHTML5中文学习网 - HTML5先行者学习网
  return (0);2nyHTML5中文学习网 - HTML5先行者学习网
}

2nyHTML5中文学习网 - HTML5先行者学习网
(2)检查某一目录是否存在:2nyHTML5中文学习网 - HTML5先行者学习网
2nyHTML5中文学习网 - HTML5先行者学习网

复制代码 代码如下:
2nyHTML5中文学习网 - HTML5先行者学习网
///目录是否存在的检查:2nyHTML5中文学习网 - HTML5先行者学习网
bool  CheckFolderExist(const string &strPath)2nyHTML5中文学习网 - HTML5先行者学习网
{2nyHTML5中文学习网 - HTML5先行者学习网
    WIN32_FIND_DATA  wfd;2nyHTML5中文学习网 - HTML5先行者学习网
    bool rValue = false;2nyHTML5中文学习网 - HTML5先行者学习网
    HANDLE hFind = FindFirstFile(strPath.c_str(), &wfd);2nyHTML5中文学习网 - HTML5先行者学习网
    if ((hFind != INVALID_HANDLE_VALUE) && (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))2nyHTML5中文学习网 - HTML5先行者学习网
    {2nyHTML5中文学习网 - HTML5先行者学习网
        rValue = true;   2nyHTML5中文学习网 - HTML5先行者学习网
    }2nyHTML5中文学习网 - HTML5先行者学习网
    FindClose(hFind);2nyHTML5中文学习网 - HTML5先行者学习网
    return rValue;2nyHTML5中文学习网 - HTML5先行者学习网
}

2nyHTML5中文学习网 - HTML5先行者学习网
4.使用boost的filesystem类库的exists函数2nyHTML5中文学习网 - HTML5先行者学习网
2nyHTML5中文学习网 - HTML5先行者学习网

复制代码 代码如下:

2nyHTML5中文学习网 - HTML5先行者学习网
#include <boost/filesystem/operations.hpp>2nyHTML5中文学习网 - HTML5先行者学习网
#include <boost/filesystem/path.hpp>2nyHTML5中文学习网 - HTML5先行者学习网
#include <boost/filesystem/convenience.hpp>2nyHTML5中文学习网 - HTML5先行者学习网
int GetFilePath(std::string &strFilePath)2nyHTML5中文学习网 - HTML5先行者学习网
{2nyHTML5中文学习网 - HTML5先行者学习网
    string strPath;2nyHTML5中文学习网 - HTML5先行者学习网
    int nRes = 0;2nyHTML5中文学习网 - HTML5先行者学习网
    //指定路径            2nyHTML5中文学习网 - HTML5先行者学习网
    strPath = "D:/myTest/Test1/Test2";2nyHTML5中文学习网 - HTML5先行者学习网
    namespace fs = boost::filesystem;2nyHTML5中文学习网 - HTML5先行者学习网
    //路径的可移植2nyHTML5中文学习网 - HTML5先行者学习网
    fs::path full_path( fs::initial_path() );2nyHTML5中文学习网 - HTML5先行者学习网
    full_path = fs::system_complete( fs::path(strPath, fs::native ) );2nyHTML5中文学习网 - HTML5先行者学习网
    //判断各级子目录是否存在,不存在则需要创建2nyHTML5中文学习网 - HTML5先行者学习网
    if ( !fs::exists( full_path ) )2nyHTML5中文学习网 - HTML5先行者学习网
    {2nyHTML5中文学习网 - HTML5先行者学习网
        // 创建多层子目录2nyHTML5中文学习网 - HTML5先行者学习网
        bool bRet = fs::create_directories(full_path);2nyHTML5中文学习网 - HTML5先行者学习网
        if (false == bRet)2nyHTML5中文学习网 - HTML5先行者学习网
        {2nyHTML5中文学习网 - HTML5先行者学习网
            return -1;2nyHTML5中文学习网 - HTML5先行者学习网
        }2nyHTML5中文学习网 - HTML5先行者学习网
    }2nyHTML5中文学习网 - HTML5先行者学习网
    strFilePath = full_path.native_directory_string();2nyHTML5中文学习网 - HTML5先行者学习网
    return 0;2nyHTML5中文学习网 - HTML5先行者学习网
}2nyHTML5中文学习网 - HTML5先行者学习网

 2nyHTML5中文学习网 - HTML5先行者学习网

 

 2nyHTML5中文学习网 - HTML5先行者学习网

(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助