C/C++ 中判断某一文件或目录是否存在

 

方法一:C++中比较简单的一种办法(使用文件流打开文件)

 1 #include <iostream>
 2 #include <fstream>
 3 
 4 using namespace std;
 5  
 6 #define FILENAME "*.dat"  // 指定文件名
 7 
 8 int main( void )
 9 {
10      fstream _file;
11      _file.open(FILENAME, ios::in);
12      if(!_file)
13      {
14           cout<<FILENAME<<"没有被创建!"<<endl;
15      }
16      else
17      {
18           cout<<FILENAME<<"已经存在!"<<endl;
19      }
20 
21      cin.get();
22      return 0;
23 }

方法二:利用C语言库函数(_access

函数原型

  int _access( const char *path,  int mode )

函数参数

  l  path:文件路径

  l  mode:读写属性

返回值(MSDN)

       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.

EINVAL   Invalid parameter.

函数功能(MSDN)

       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.

/* 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 " );}
}输出:
>>File ACCESS.C exists.
>>File ACCESS.C has write permission

方法三:使用Windows API函数FindFirstFile(...)

  (1) 检查某一文件是否存在:

#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)  检查某一目录是否存在:

// 目录是否存在的检查:
BOOL CheckFolderExist(const string &strPath)
{WIN32_FIND_DATA  FindFileData;BOOL bValue = false;HANDLE hFind = FindFirstFile(strPath.c_str(),  &FindFileData);if ((hFind != INVALID_HANDLE_VALUE) && (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)){bValue = TRUE;  }FindClose(hFind);return bValue;
}

方法四:使用boost库中filesystem类库的exists函数

#include <boost/filesystem/operations.hpp>
#include <boost/filesystem/path.hpp>
#include <boost/filesystem/convenience.hpp>using namespace boost::filesystem;int GetFilePath(std::string &strFilePath)
{string strPath;int nRes = 0;//指定路径           strPath = "C:\";
path full_path( initial_path() );full_path = system_complete( path(strPath, native ) );//判断各级子目录是否存在,不存在则需要创建if ( !exists( full_path ) ){bool bRet = create_directories(full_path);if (false == bRet){return -1;}}strFilePath  =  full_path.native_directory_string();return 0;
}

 

 

转载于:https://www.cnblogs.com/MakeView660/p/6101251.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/469857.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

建立交叉编译环境

做什么之前没有编译器是不行的、 1、打开终端运行arm-linux-gcc -v 如果提示这个命令不存在,好吧、照着下面的步骤安装一个吧 在Linux 平台下,要为开发板编译内核,图形界面Qtopia ,bootloader,还有其他一 些应用程序,均需要交叉编译工具链。 之前的系统,要使用不同的编…

logistic模型原理与推导过程分析(1)

从线性分类器谈起 给定一些数据集合&#xff0c;他们分别属于两个不同的类别。例如对于广告数据来说&#xff0c;是典型的二分类问题&#xff0c;一般将被点击的数据称为正样本&#xff0c;没被点击的数据称为负样本。现在我们要找到一个线性分类器&#xff0c;将这些数据分为两…

android转流媒体,android 4.4中的流媒体渲染过程

第一次写blog&#xff0c;只是为了记下学习的过程。android中东西很多&#xff0c;架构和流程都很复杂&#xff0c;经常发现以前学习过的很多东西&#xff0c;即使当时看明白没多久就忘记了&#xff0c;只能重新拾起再看。于是想起blog这个东东&#xff0c;写下来总不会忘记&am…

【错误记录】python requests库 Response 判断坑

在requests访问之后, 我直接判断resp的值, 如下&#xff1a; if resp:do something发现当Response 为500的时候没有进入if分支, 检查源码&#xff0c;发现Response重写了__bool__方法, 根据resp.raise_for_status来确定是否为True, 当为500时, 为假, 记录一下转载于:https://ww…

linux Hello World 模块编程

折腾了差不多一个晚上: 1、关于在前面加上TAB,这个是有必要的、 2、Makefile的编写也是有些差异的 3、关于内核的版本可以通过uname -r来查看一下 我

logistic模型原理与推导过程分析(2)

二项逻辑回归模型 既然logistic回归把结果压缩到连续的区间(0,1)&#xff0c;而不是离散的0或者1&#xff0c;然后我们可以取定一个阈值&#xff0c;通常以0.5为阈值&#xff0c;如果计算出来的概率大于0.5&#xff0c;则将结果归为一类&#xff08;1&#xff09;&#xff0c;…

怎么样批量修改html里的内容,批量修改替换多个Word文档中同一内容的方法

批量修改替换多个Word文档中同一内容的方法群里一位朋友问到&#xff0c;如何一次性批量替换多个word文档中的同一内容。其实&#xff0c;实现多个Word文档的字符进行批量替换的方法有多种。第一种方法&#xff0c;可以利用第三方软件&#xff1a;全能字符串批量替换机。在网上…

织梦建站

这是调用对应文章连接的标签 [field:arcurl/]&#xff0c;例如下面这个调用文章标签里面&#xff0c;就调用了文章的连接&#xff1a; {dede:arclist row 10<a href"[field:arcurl/]">[field:title/]</a>dede:arclist/} 1234{dede:arclist flagh typeid…

linux下的字符设备驱动

Linux字符设备驱动程序的一个简单示例一.开发环境&#xff1a; 主 机&#xff1a;VMWare--Fedora 9 开发板&#xff1a;友善之臂mini2440--256MB Nandflash 编译器&#xff1a;arm-linux-gcc-4.3.2 二.驱动源码&#xff1a; 该源码很浅显易懂&#xff0c;非常适合初学者。 me…

logistic模型原理与推导过程分析(3)

附录&#xff1a;迭代公式向量化 θ相关的迭代公式为&#xff1a; ​ 如果按照此公式操作的话&#xff0c;每计算一个θ需要循环m次。为此&#xff0c;我们需要将迭代公式进行向量化。 首先我们将样本矩阵表示如下&#xff1a; 将要求的θ也表示成矩阵的形式&#xff1a; 将x…

计算机表示法是知识 表示法么,计算机三级考试关于IP地址知识点

计算机三级考试关于IP地址知识点IP地址是IP协议提供的一种统一的地址格式&#xff0c;它为互联网上的每一个网络和每一台主机分配一个逻辑地址&#xff0c;以此来屏蔽物理地址的差异&#xff0c;同时也是计算机三级考试的重要内容&#xff0c;小编整理了相关知识点&#xff0c;…

VMware 下Linux无法上网 新增支持WIFI方式 无线连接

试过很管用、如果宿主机可以上网、不管是有线还是无线、只在在连接网络那里是.net的方式就可以正常上网的 ADSL-VMware 共享上网 单机环境&#xff0c;ADSL拨号上网&#xff0c;安装VMware后&#xff0c;客户机如何与宿主机共享上网&#xff1f;网友经常问这个问题&#xff0…

Http学习笔记

在 MIME 扩展中会使用一种称为多部分对象集合&#xff08;Multipart&#xff09;的方法&#xff0c;来容纳多份不同类型的数据。包含的对象如下&#xff1a; form-data在 Web 表单文件上传时使用。byteranges状态码 206&#xff08;Partial Content&#xff0c;部分内容&#x…

监督学习与无监督学习

监督学习 用一个例子介绍什么是监督学习把正式的定义放在后面介绍。 假如说你想预测房价。前阵子&#xff0c;一个学生从波特兰俄勒冈州的研究所收集了一些房价的数据。你把这些数据画出来&#xff0c;看起来是这个样子&#xff1a; 横轴表示房子的面积&#xff0c;单位是平…

html css配色方案,链接css不同的配色方案问题

为什么导航链接采用正常链接的风格&#xff1f;这是一个基本的导航菜单&#xff1a;Home |Autobelettering |Reclame |Prints |Textiel |Ontwerpen |Aanleveren |Contact这是CSS/* Normal links */a {font-size: 12px;color: #DC342F;}a:link {text-decoration: none;color: #D…

嵌入式linux文件系统

嵌入式linux文件系统 操作系统中最重要的莫过于“进程管理”和“文件系统”两大部分,而linux从一开始就把外部设备当成是“文件”处理。从某种意义来讲,凡是能够产生或接受消息的都是“文件” 以下是几种文件的含义 1、一种特定的文件格式,如FAE32,EXT2,EXT3等; 2、按特定的…

【CodeVS】1023 GPA计算

1023 GPA计算 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 青铜 Bronze 题目描述 Description 小松终于步入了大学的殿堂&#xff0c;带着兴奋和憧憬&#xff0c;他参加了信息科学技术学院的新生大会。会上&#xff0c;院长梅教授给大家介绍了在大学中的成绩计算方式&…

单变量与多变量线性回归(Linear Regression with One Variable)

2.1 线性回归算法模型表示 让我们通过一个例子来开始&#xff1a;这个例子是预测住房价格的&#xff0c;我们要使用一个数据集&#xff0c;数据集包含俄勒冈州波特兰市的住房价格。在这里&#xff0c;我要根据不同房屋尺寸所售出的价格&#xff0c;画出我的数据集。比方说&…

SPI、I2C、UART三种串行总线的原理、区别及应用

SPI协议解析&#xff0c;链接如下 https://blog.csdn.net/weiqifa0/article/details/82765892 I2C协议解析&#xff0c;链接如下 https://blog.csdn.net/weiqifa0/article/details/82765349 串口UART串行总线协议 https://blog.csdn.net/weiqifa0/article/details/8269988…

计算机网络课制作双绞线实验,《计算机网络》课程实验——网线制作.pdf

第1 章 网线的制作和应用第1 章 网线的制作和应用实验1 直连双绞线的制作和应用双绞线一般分为屏蔽双绞线(STP)和非屏蔽双绞线(UTP )两类。如果没有特殊要求&#xff0c;在计算机网络中一般使用非屏蔽双绞线&#xff0c;所以本节主要以非屏蔽双绞线为例进行介绍。1.1.1 实验概述…