不同的编程语言判断文件是否存在的方法是不一样的。你知道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++如何获取目录下的文件列表信息?下面下面就一起来了解看看具体的方法吧!1.数据结构复制代码代码如下:structdirent{longd_ino;off_td_off;unsignedshortd_reclen;unsignedch...
导语:现在大家都习惯于将重要的文件保存在U盘中,因为U盘是属于私人物品的,存放在电脑中有可能会被人偷看到,放在U盘中随时放置在自己的电脑身边,所以安全*更加高。今天小编教大家几招如何辨别U盘是否中毒了!但是放在U盘中除了他人的偷窥外,还存在...
如果不赋值给局部变量,这样会导致整个程序的崩溃,因为,它的内容被系统指向了垃圾内存。下面是小编为大家带来的C语言中判断int、long型等变量是否赋值的方法,欢迎阅读。当然,如果你不赋值给局部变量,这样会导致整个程序的崩溃,因为,它的内容被...
笔试题目:C++编写算法判断两棵二叉树是否相等 题目:请实现两棵树是否相等的比较,相等返回0否则返回其他值。解析:A、B两棵树相等,当且仅当RootA->c==RootB->c,而且A的左右子树对应相等或者左右互换后相...
每年开春,都有不少人计划在新的一年,倒腾点什么“新项目”——有人打算辞去原有的工作去创业;有人打算为自己的公司开拓新的业务;还有人在忙着到处寻找项目去投资...而一旦涉及一个“新项目”,所有人都会面临一个问题——不确定这个项目是否靠谱。隔行...
资助感谢信模板12-11
给情人的生日祝福语10-15
关于朋友作文900字11-23
一落千丈造句04-09
有关为理想加油的作文06-01
雨中忆作文650字01-26
孩子得了冻疮怎么办05-02
超有个*句子大全05-28
元旦包饺子比赛作文300字01-09
细品三国演义初一读后感500字01-18
愿人人都献出自己的爱作文01-22
我最喜欢的水果小学优秀作文01-28
*游初二作文01-29
游美景小学生优秀作文02-05
我理想中的老师作文800字01-11
高淳之旅作文600字游记作文01-15