获取文件属性的一些函数和结构体

在获取文件属性的时候有以下几种方式:

一、使用CFileDialog类,对于选中的文件可以是通过GetPathName,GetFileName,GetFileTitle,GetFileExt函数类获取文件的全名称,文件名,标题名以及文件类型;

二、使用_stat函数:

struct stat st;

     //stat("d:\\D ", &st);     //返回16895 文件夹 
 _ stat( "d:\\testm.m " , &st);      //返回33206  文件
stat结构体中可以知道该路径下的是文件还是文件夹,可以知道文件的创建时间、最后一次修改时间、最后一次访问时间、文件所在的磁盘符、文件的大小

三、使用FindFirstFile和FindClose:

WIN32_FIND_DATA FindFileData;
//获取文件属性信息
memset(&FindFileData, 0x00, sizeof(WIN32_FIND_DATA));
FindClose(FindFirstFile(strName,&FindFileData));


WIN32_FIND_DATA 结构体可以获取文件的属性、文件创建时间、最后一次访问时间、最后一次修改时间、文件大小的高字节、文件大小的低字节以及文件名。

通过该方式获取的文件相关时间是以FILETIME结构体的格式存储的,要将其转换为本地时间或系统时间才可以使用,转换方式如下:

SYSTEMTIME systime = {0};
FILETIME localtime;
memset(&localtime, 0x00, sizeof(FILETIME));
FileTimeToLocalFileTime(&FindFileData.ftLastWriteTime,&localtime);  
FileTimeToSystemTime(&localtime,&systime);
strName.Format(_T("%.4d-%.2d-%.2d %.2d:%.2d:%.2d"), systime.wYear, systime.wMonth, systime.wDay, systime.wHour, systime.wMinute, systime.wSecond);





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 很高兴为您服务。您可以使用以下C语言代码来获取文件属性:struct stat st; if(stat("filename",&st)==0) { printf("文件大小:%d\n",st.st_size); printf("访问时间:%s\n",ctime(&st.st_atime)); printf("修改时间:%s\n",ctime(&st.st_mtime)); } ### 回答2: 在C语言中,我们可以使用标准库函数获取文件属性。其中,常用的函数是`stat`和`lstat`。下面是使用`stat`函数获取文件属性的示例代码: ```c #include <stdio.h> #include <sys/stat.h> int main() { char filename[100]; struct stat fileInfo; printf("请输入文件名:"); scanf("%s", filename); // 获取文件属性 if (stat(filename, &fileInfo) == 0) { // 文件类型 if (S_ISREG(fileInfo.st_mode)) { printf("文件类型:普通文件\n"); } else if (S_ISDIR(fileInfo.st_mode)) { printf("文件类型:目录\n"); } else if (S_ISLNK(fileInfo.st_mode)) { printf("文件类型:符号链接\n"); } else { printf("文件类型:其他\n"); } printf("文件大小:%lld 字节\n", fileInfo.st_size); printf("最后访问时间:%s", ctime(&fileInfo.st_atime)); printf("最后修改时间:%s", ctime(&fileInfo.st_mtime)); printf("最后状态改变时间:%s", ctime(&fileInfo.st_ctime)); } else { printf("获取文件属性失败\n"); } return 0; } ``` 以上代码先通过用户的输入获取文件名,然后调用`stat`函数获取文件属性获取成功后,通过判断`st_mode`成员来确定文件类型(普通文件、目录、或符号链接),并输出文件大小、最后访问时间、最后修改时间和最后状态改变时间。 需要注意的是,文件的最后访问时间、最后修改时间和最后状态改变时间的值是一个`time_t`类型的整数值,需要通过`ctime`函数将其转换成可读的时间字符串。 ### 回答3: 要获取文件属性,可以使用C语言中的stat()函数。该函数能够获取文件的各种属性信息,比如文件类型、文件大小、权限等。 首先,在程序开头引入头文件<sys/stat.h>,该头文件定义了与文件属性相关的结构体函数。 然后,使用stat()函数获取文件属性。该函数的原型如下: int stat(const char *path, struct stat *buf); 其中,path是文件的路径和名称,buf是一个stat结构体指针,用来存储获取到的属性信息。 接下来,声明一个stat结构体变量,用于保存获取到的文件属性。 然后,使用stat()函数获取指定文件的属性信息,将文件路径和名称作为参数传入,并将获取到的属性信息存储到前面声明的结构体变量中。 最后,可以根据需要,通过访问结构体变量中的成员来获取想要的属性信息。比如,通过访问st_size成员可以获取文件的大小;通过访问st_mode成员可以获取文件的权限。 下面是一个简单的示例代码: #include <stdio.h> #include <sys/stat.h> int main() { const char *filename = "test.txt"; struct stat file_attr; if (stat(filename, &file_attr) == 0) { printf("文件大小:%ld字节\n", file_attr.st_size); printf("文件权限:%o\n", file_attr.st_mode & 0777); } else { printf("获取文件属性失败。\n"); } return 0; } 上述代码中,假设要获取文件名为test.txt。首先,定义了一个stat结构体变量file_attr,然后使用stat()函数获取文件属性信息,并将结果存储到file_attr中。最后,利用printf函数打印出文件大小和文件权限。 注意,上述代码仅为示例,实际使用时还需根据具体需求进行适当的错误处理和参数校验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值