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

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

 更新時(shí)間:2013年07月13日 11:04:21   作者:  
以下文章是對(duì)C/C++中判斷某一文件或目錄是否存在的實(shí)現(xiàn)代碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以參考下
1.C++很簡(jiǎn)單的一種辦法:
復(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<<"沒(méi)有被創(chuàng)建";
      }
      else
      {
          cout<<FILENAME<<"已經(jīng)存在";
      }
      return 0;
}

2.利用 c 語(yǔ)言的庫(kù)的辦法:
函數(shù)名: access
功  能: 確定文件的訪問(wèn)權(quán)限
用  法: int access(const char *filename, int amode);
以前一直沒(méi)用過(guò)這個(gè)函數(shù),今天調(diào)試程序發(fā)現(xiàn)了這個(gè)函數(shù),感覺(jué)挺好用,尤其是判斷一個(gè)文件或文件夾是否存在的時(shí)候,用不著再find了,文件的話還可以檢測(cè)讀寫權(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平臺(tái)下用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類庫(kù)的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 ) );
    //判斷各級(jí)子目錄是否存在,不存在則需要?jiǎng)?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++類和對(duì)象實(shí)例解析(二)

    C++類和對(duì)象實(shí)例解析(二)

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

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

    代理服務(wù)器,即允許一個(gè)網(wǎng)絡(luò)終端(一般為客戶端)通過(guò)這個(gè)服務(wù)與另一?個(gè)網(wǎng)絡(luò)終端(一般為服務(wù)器)進(jìn)行非直接的連接,下面我們就來(lái)看看如何使用C++設(shè)計(jì)與實(shí)現(xiàn)一個(gè)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)),本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-02-02
  • C++插件化 NDD源碼的插件機(jī)制實(shí)現(xiàn)解析

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

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

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

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

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

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

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

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

    Opencv二幀差法檢測(cè)運(yùn)動(dòng)目標(biāo)與提取輪廓

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

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

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

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

    下面小編就為大家?guī)?lái)一篇淺談C++的淺拷貝出現(xiàn)的錯(cuò)誤。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01

最新評(píng)論

临沧市| 开封市| 吴堡县| 团风县| 清河县| 灌云县| 孝感市| 盈江县| 手游| 双峰县| 麻栗坡县| 馆陶县| 通榆县| 周口市| 孟州市| 星子县| 高唐县| 定远县| 即墨市| 泸水县| 甘孜县| 姚安县| 固阳县| 玛曲县| 昂仁县| 城固县| 府谷县| 合江县| 白朗县| 怀化市| 靖江市| 怀来县| 贵德县| 通许县| 迁安市| 靖远县| 田林县| 吕梁市| 迭部县| 马鞍山市| 庄河市|