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

发布时间:2022-08-04 12:35:37

不同的编程语言判断文件是否存在的方法是不一样的。你知道C/C++中如何判断某一文件或目录是否存在吗?下面是小编为大家带来的C/C++中如何判断某一文件或目录是否存在的知识,欢迎阅读。

1.C++很简单的一种办法:

复制代码代码如下:

#include

#include

usingnamespacestd;

#defineFILENAME"stat.dat"

intmain()

{

fstream_file;

_file.open(FILENAME,ios::in);

if(!_file)

{

cout<

}

else

{

cout<

}

return0;

}

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

函数名:access

功能:确定文件的访问权限

用法:intaccess(constchar*filename,intamode);

以前一直没用过这个函数,今天调试程序发现了这个函数,感觉挺好用,尤其是判断一个文件或文件夹是否存在的时候,用不着再find了,文件的话还可以检测读写权限,文件夹的话则只能判断是否存在,下面摘自MSDN:

int_access(constchar*path,intmode);

ReturnValue

Eachofthesefunctionsreturns0ifthefilehasthegivenmode.Thefunctionreturns–1ifthenamedfiledoesnotexistorisnotaccessibleinthegivenmode;inthiscase,errnoissetasfollows:

EACCES

Accessdenied:file'spermissionsettingdoesnotallowspecifiedaccess.

ENOENT

Filenameorpathnotfound.

Parameters

path

Fileordirectorypath

mode

Permissionsetting

Remarks

Whenusedwithfiles,the_accessfunctiondetermineswhetherthespecifiedfileexistsandcanbeaccessedasspecifiedbythevalueofmode.Whenusedwithdirectories,_accessdeterminesonlywhetherthespecifieddirectoryexists;inWindowsNT,alldirectorieshavereadandwriteaccess.

modeValueChecksFileFor

00Existenceonly

02Writepermission

04Readpermission

06Readandwritepermission

Example

复制代码代码如下:

#include

#include

#include

voidmain(void)

{

if((_access("ACCESS.C",0))!=-1)

{

printf("FileACCESS.Cexists");

if((_access("ACCESS.C",2))!=-1)

printf("FileACCESS.Chaswritepermission");

}

}

OutputFileACCESS.CexistsFileACCESS.Chaswritepermission

3.在windows平台下用API函数FindFirstFile(...):

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

复制代码代码如下:

#define_WIN32_WINNT0x0400

#include"windows.h"

int

main(intargc,char*argv[])

{

WIN32_FIND_DATAFindFileData;

HANDLEhFind;

printf("Targetfileis%s.",argv[1]);

hFind=FindFirstFile(argv[1],&FindFileData);

if(hFind==INVALID_HANDLE_VALUE){

printf("InvalidFileHandle.GetLastErrorreports%d",GetLastError());

}else{

printf("Thefirstfilefoundis%s",FindFileData.cFileName);

FindClose(hFind);

}

return(0);

}

(2)检查某一目录是否存在:

复制代码代码如下:

///目录是否存在的检查:

boolCheckFolderExist(conststring&strPath)

{

WIN32_FIND_DATAwfd;

boolrValue=false;

HANDLEhFind=FindFirstFile(strPath.c_str(),&wfd);

if((hFind!=INVALID_HANDLE_VALUE)&&(wfd.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY))

{

rValue=true;

}

FindClose(hFind);

returnrValue;

}

4.使用boost的filesystem类库的exists函数

复制代码代码如下:

#include

#include

#include

intGetFilePath(std::string&strFilePath)

{

stringstrPath;

intnRes=0;

//指定路径

strPath="D:/myTest/Test1/Test2";

namespacefs=boost::filesystem;

//路径的可移植

fs::pathfull_path(fs::initial_path());

full_path=fs::system_plete(fs::path(strPath,fs::native));

//判断各级子目录是否存在,不存在则需要创建

if(!fs::exists(full_path))

{

//创建多层子目录

boolbRet=fs::create_directories(full_path);

if(false==bRet)

{

return-1;

}

}

strFilePath=full_path.native_directory_string();

return0;

}

看了C/C++中如何判断某一文件或目录是否存在还看了:
  • C/C++如何获取目录下的文件列表信息

    C/C++如何获取目录下的文件列表信息?下面下面就一起来了解看看具体的方法吧!1.数据结构复制代码代码如下:structdirent{longd_ino;off_td_off;unsignedshortd_reclen;unsignedch...

  • 如何判断U盘是否中毒

    导语:现在大家都习惯于将重要的文件保存在U盘中,因为U盘是属于私人物品的,存放在电脑中有可能会被人偷看到,放在U盘中随时放置在自己的电脑身边,所以安全*更加高。今天小编教大家几招如何辨别U盘是否中毒了!但是放在U盘中除了他人的偷窥外,还存在...

  • C语言中判断int、long型等变量是否赋值的方法

    如果不赋值给局部变量,这样会导致整个程序的崩溃,因为,它的内容被系统指向了垃圾内存。下面是小编为大家带来的C语言中判断int、long型等变量是否赋值的方法,欢迎阅读。当然,如果你不赋值给局部变量,这样会导致整个程序的崩溃,因为,它的内容被...

  • C++编写算法判断两棵二叉树是否相等

         笔试题目:C++编写算法判断两棵二叉树是否相等 题目:请实现两棵树是否相等的比较,相等返回0否则返回其他值。解析:A、B两棵树相等,当且仅当RootA-&gt;c==RootB-&gt;c,而且A的左右子树对应相等或者左右互换后相...

  • 如何去判断一个餐饮创业项目是否靠谱

    每年开春,都有不少人计划在新的一年,倒腾点什么“新项目”——有人打算辞去原有的工作去创业;有人打算为自己的公司开拓新的业务;还有人在忙着到处寻找项目去投资...而一旦涉及一个“新项目”,所有人都会面临一个问题——不确定这个项目是否靠谱。隔行...