在C++中,stat
函數用于獲取文件或目錄的元信息
#include <iostream>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
int main() {
struct stat file_stats;
int result = stat("example.txt", &file_stats);
if (result == 0) {
std::cout << "File exists." << std::endl;
std::cout << "Size: " << file_stats.st_size << " bytes" << std::endl;
std::cout << "Last modified: " << ctime(&file_stats.st_mtime);
} else {
std::cerr << "Error: " << result << std::endl;
}
return 0;
}
在這個示例中,我們使用stat
函數獲取名為example.txt
的文件的信息。如果文件存在,我們將輸出文件的大小和最后修改時間。如果文件不存在,我們將輸出錯誤代碼。
要實現對文件的更精細控制,你可以使用以下選項:
使用stat
函數的第二個參數(struct stat *statbuf
)中的st_mode
字段來檢查文件的類型和權限。例如,你可以使用S_ISREG()
宏來檢查文件是否為普通文件,或者使用S_ISDIR()
宏來檢查文件是否為目錄。
使用stat
函數的第二個參數(struct stat *statbuf
)中的st_mtime
字段來獲取文件的最后修改時間,并根據需要對其進行操作。
使用stat
函數的第二個參數(struct stat *statbuf
)中的st_size
字段來獲取文件的大小,并根據需要對其進行操作。
使用stat
函數的第二個參數(struct stat *statbuf
)中的其他字段(如st_uid
、st_gid
等)來獲取文件的用戶ID、組ID等信息,并根據需要對其進行操作。
請注意,stat
函數是跨平臺的,但在某些平臺上可能需要包含不同的頭文件或使用不同的函數名稱。在使用stat
函數之前,請確保了解你所使用的平臺和編譯器的要求。