您现在的位置是:首页 >其他 >C++ 判断路径为文件夹还是文件网站首页其他
C++ 判断路径为文件夹还是文件
简介C++ 判断路径为文件夹还是文件
stat函数
头文件
#include <sys/stat.h>
struct stat s;
char* path = "D:\test.txt";
if (stat(path,&s)==0){
if(s.st_mode & S_IFDIR){
std::cout<<"it's a directory"<<std::endl;
}else if (s.st_mode & S_IFREG){
std::cout<<"it's a file"<<std::endl;
}else{
std::cout<<"not file not directory"<<std::endl;
}
}else{
std::cout<<"error, doesn't exist"<<std::endl;
}
语法
int stat (Path, Buffer)
const char *Path;
struct stat *Buffer;
Path
指定标识文件的路径名。根据所使用的接口,此名称的解释不同。如果指定了DirFileDescriptor并且Path是一个相对路径名,那么Path被认为是相对于DirFileDescriptor指定的目录的。
Buffer
指定指向在其中返回信息的状态结构的指针。stat结构在<sys/stat.h>文件中描述。
返回值
成功完成后,返回值0。否则,返回-1的值,并设置errno全局变量来指示错误。
Error Codes
EACCES | 路径前缀的一个组件的搜索权限被拒绝 |
ENAMETOOLONG | POSIX_NO_TRUNC标志生效时,路径前缀的长度超过了PATH_MAX标志值或路径名超过了NAME_MAX标志值。 |
ENOTDIR | 路径前缀的组件不是目录。 |
EFAULT | Path或Buffer参数都指向进程分配的地址空间之外的位置 |
ENOENT | 以Path参数命名的文件不存在 |
EOVERFLOW | 文件大小大于Buffer参数所指向的状态结构中所能表示的最大值。 |
FindFirstFileA函数
头文件
#include <windows.h>
using namespace std;
WIN32_FIND_DATAA FindFileData;
FindFirstFileA("D:\test.txt",&FindFileData);
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
std::cout<<"directory"<<std::endl;
}
else
{
std::cout<<" file "<<std::endl;
}
语法
HANDLE FindFirstFileA(
[in] LPCSTR lpFileName,
[out] LPWIN32_FIND_DATAA lpFindFileData
);
参数
[in] lpFileName
目录或路径以及文件名。 文件名可以包含通配符,例如星号 (*) 或问号 (?) 。
此参数不应为 NULL,例如,空字符串或缺少终止 null 字符) 的字符串,或尾随反斜杠 () 结尾的字符串 (。
如果字符串以通配符、句点 (.) 或目录名称结尾,则用户必须具有对路径上根目录和所有子目录的访问权限。
在此函数的 ANSI 版本中,名称限制为 MAX_PATH 个字符。 若要将此限制扩展到 32,767 宽字符,请调用函数的 Unicode 版本,并将“\?”前面附加到路径。 有关详细信息,请参阅 命名文件。
提示从 Windows 10 版本 1607 开始,对于此函数的 unicode 版本 (FindFirstFileW) ,可以选择加入以删除MAX_PATH字符限制,而无需附加“\?”。 有关详细信息,请参阅 命名文件、路径和命名空间 的“最大路径限制”部分。
[out] lpFindFileData
指向 WIN32_FIND_DATA结构的指针 ,该结构接收有关找到的文件或目录的信息。
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。