2008年1月13日 星期日

C - File attributes

今天在研究怎麼取得檔案的相關屬性,簡單的以檔案大小為例

在書中說使用 io.h head file 搭配 filelength() function 就可以取得....

在 Windows 中似乎沒問題,不過在 Linux 上似乎就不行了,於是上網查了一下資料,發現要使用 stat(const char *filename, struct stat *buf) function 才可以取得檔案屬性

而若要用此 function,必須要引用「sys/stat.h」 head file,裡面定義了 stat struct,其中有許多 member 分別表示不同的 file attribute,詳細可以參考「The meaning of the File Attributes」一文。

接著是 stat 的使用方式,可以參考「Reading the Attributes of a File」一文,以下用個簡單範例來說明:
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>

int main(void)
{
//開啟檔案
FILE *fptr;
fptr = fopen("fileTest.txt", "r")

//取得檔案屬性
struct stat myFileStat;
stat(fpath, &myFileStat);
printf("file serial number : %d\n", myFileStat.st_ino);
printf("device contains the file : %d\n", myFileStat.st_dev);
printf("user ID : %d\n", myFileStat.st_uid);
printf("group ID : %d\n", myFileStat.st_gid);
printf("file size in bytes : %d\n", myFileStat.st_size);
printf("last access time : %d\n", myFileStat.st_atime);

//關閉檔案
fclose(fptr);

return 0;
}
上面只介紹了一部份的屬性,詳細的屬性資訊可以參考上面的連結。

沒有留言:

張貼留言