最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C/C++中如何判斷某一文件或目錄是否存在

 更新時間:2013年07月13日 11:04:21   作者:  
以下文章是對C/C++中判斷某一文件或目錄是否存在的實現(xiàn)代碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以參考下
1.C++很簡單的一種辦法:
復(fù)制代碼 代碼如下:

#include <iostream>
#include <fstream>
using namespace std;
#define FILENAME "stat.dat"
int main()
{
     fstream _file;
     _file.open(FILENAME,ios::in);
     if(!_file)
     {
         cout<<FILENAME<<"沒有被創(chuàng)建";
      }
      else
      {
          cout<<FILENAME<<"已經(jīng)存在";
      }
      return 0;
}

2.利用 c 語言的庫的辦法:
函數(shù)名: access
功  能: 確定文件的訪問權(quán)限
用  法: int access(const char *filename, int amode);
以前一直沒用過這個函數(shù),今天調(diào)試程序發(fā)現(xiàn)了這個函數(shù),感覺挺好用,尤其是判斷一個文件或文件夾是否存在的時候,用不著再find了,文件的話還可以檢測讀寫權(quán)限,文件夾的話則只能判斷是否存在,下面摘自MSDN:
int _access( const char *path, int mode );
Return Value
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:
EACCES
Access denied: file's permission setting does not allow specified access.
ENOENT
Filename or path not found.
Parameters
path
File or directory path
mode
Permission setting
Remarks
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.
mode Value            Checks File For
00                              Existence only
02                              Write permission
04                              Read permission
06                              Read and write permission
Example
復(fù)制代碼 代碼如下:

/* ACCESS.C: This example uses _access to check the
 * file named "ACCESS.C" to see if it exists and if
 * writing is allowed.
 */
#include  <io.h>
#include  <stdio.h>
#include  <stdlib.h>
void main( void )
{
   /* Check for existence */
   if( (_access( "ACCESS.C", 0 )) != -1 )
   {
      printf( "File ACCESS.C exists " );
      /* Check for write permission */
      if( (_access( "ACCESS.C", 2 )) != -1 )
         printf( "File ACCESS.C has write permission " );
   }
}

OutputFile ACCESS.C existsFile ACCESS.C has write permission
3.在windows平臺下用API函數(shù)FindFirstFile(...):
(1)檢查文件是否存在:
復(fù)制代碼 代碼如下:

#define _WIN32_WINNT 0x0400
#include "windows.h"
int
main(int argc, char *argv[])
{
  WIN32_FIND_DATA FindFileData;
  HANDLE hFind;
  printf ("Target file is %s. ", argv[1]);
  hFind = FindFirstFile(argv[1], &FindFileData);
  if (hFind == INVALID_HANDLE_VALUE) {
    printf ("Invalid File Handle. Get Last Error reports %d ", GetLastError ());
  } else {
    printf ("The first file found is %s ", FindFileData.cFileName);
    FindClose(hFind);
  }
  return (0);
}

(2)檢查某一目錄是否存在:
復(fù)制代碼 代碼如下:

///目錄是否存在的檢查:
bool  CheckFolderExist(const string &strPath)
{
    WIN32_FIND_DATA  wfd;
    bool rValue = false;
    HANDLE hFind = FindFirstFile(strPath.c_str(), &wfd);
    if ((hFind != INVALID_HANDLE_VALUE) && (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
    {
        rValue = true;  
    }
    FindClose(hFind);
    return rValue;
}

4.使用boost的filesystem類庫的exists函數(shù)
復(fù)制代碼 代碼如下:

#include <boost/filesystem/operations.hpp>
#include <boost/filesystem/path.hpp>
#include <boost/filesystem/convenience.hpp>
int GetFilePath(std::string &strFilePath)
{
    string strPath;
    int nRes = 0;
    //指定路徑           
    strPath = "D:/myTest/Test1/Test2";
    namespace fs = boost::filesystem;
    //路徑的可移植
    fs::path full_path( fs::initial_path() );
    full_path = fs::system_complete( fs::path(strPath, fs::native ) );
    //判斷各級子目錄是否存在,不存在則需要創(chuàng)建
    if ( !fs::exists( full_path ) )
    {
        // 創(chuàng)建多層子目錄
        bool bRet = fs::create_directories(full_path);
        if (false == bRet)
        {
            return -1;
        }
    }
    strFilePath = full_path.native_directory_string();
    return 0;
}

相關(guān)文章

  • C++類和對象實例解析(二)

    C++類和對象實例解析(二)

    這篇文章主要介紹了C++類和對象,從定義出發(fā)再到實例解析,深入的理解C++類和對象,需要的朋友可以參考下
    2015-08-08
  • C++中HTTP?代理服務(wù)器的設(shè)計與實現(xiàn)詳解

    C++中HTTP?代理服務(wù)器的設(shè)計與實現(xiàn)詳解

    代理服務(wù)器,即允許一個網(wǎng)絡(luò)終端(一般為客戶端)通過這個服務(wù)與另一?個網(wǎng)絡(luò)終端(一般為服務(wù)器)進(jìn)行非直接的連接,下面我們就來看看如何使用C++設(shè)計與實現(xiàn)一個HTTP?代理服務(wù)器吧
    2024-01-01
  • VS?Code安裝及C、C++環(huán)境配置詳細(xì)教程(Windows系統(tǒng))

    VS?Code安裝及C、C++環(huán)境配置詳細(xì)教程(Windows系統(tǒng))

    這篇文章主要介紹了VS?Code安裝及C、C++環(huán)境配置詳細(xì)教程(Windows系統(tǒng)),本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-02-02
  • C++插件化 NDD源碼的插件機(jī)制實現(xiàn)解析

    C++插件化 NDD源碼的插件機(jī)制實現(xiàn)解析

    這篇文章主要介紹了C++插件化 NDD源碼的插件機(jī)制實現(xiàn)解析,這里再介紹推薦下優(yōu)秀的國產(chǎn)軟件開源項目?NDD(notepad--),一個支持windows/linux/mac的文本編輯器,目標(biāo)是要國產(chǎn)替換同類軟件,需要的朋友可以參考下
    2023-03-03
  • 如何通過指針突破C++類的訪問權(quán)限

    如何通過指針突破C++類的訪問權(quán)限

    這篇文章主要介紹了通過指針突破C++類的訪問權(quán)限,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02
  • C語言代碼實現(xiàn)井字棋游戲

    C語言代碼實現(xiàn)井字棋游戲

    這篇文章主要為大家詳細(xì)介紹了C語言代碼實現(xiàn)井字棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • C++11返回類型后置語法的使用示例

    C++11返回類型后置語法的使用示例

    本篇文章主要介紹了C++11返回類型后置語法的使用示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • Opencv二幀差法檢測運動目標(biāo)與提取輪廓

    Opencv二幀差法檢測運動目標(biāo)與提取輪廓

    這篇文章主要為大家詳細(xì)介紹了Opencv使用二幀差法檢測運動目標(biāo)與提取輪廓,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • C++實現(xiàn)一行一行讀取文本的方法

    C++實現(xiàn)一行一行讀取文本的方法

    今天小編就為大家分享一篇C++實現(xiàn)一行一行讀取文本的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • 淺談C++的淺拷貝出現(xiàn)的錯誤

    淺談C++的淺拷貝出現(xiàn)的錯誤

    下面小編就為大家?guī)硪黄獪\談C++的淺拷貝出現(xiàn)的錯誤。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01

最新評論

宜阳县| 松原市| 揭东县| 溆浦县| 赤水市| 长顺县| 焦作市| 三门县| 永和县| 新乡县| 泗洪县| 辽阳市| 若羌县| 吉林市| 内乡县| 连州市| 清远市| 邛崃市| 青田县| 南京市| 扬州市| 枣强县| 上饶县| 河南省| 阿尔山市| 达孜县| 潞西市| 荔波县| 屯留县| 安陆市| 霍林郭勒市| 兖州市| 明溪县| 新干县| 泗水县| 交城县| 曲周县| 武鸣县| 乐平市| 调兵山市| 广宗县|