[Plain Text] 纯文本查看 复制代码
BOOL WINAPI GetFileAttributesEx(
__in LPCTSTR lpFileName,
__in GET_FILEEX_INFO_LEVELS fInfoLevelId,
__out LPVOID lpFileInformation
);
[Plain Text] 纯文本查看 复制代码
typedef struct _WIN32_FILE_ATTRIBUTE_DATA {
DWORD dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
DWORD nFileSizeHigh;
DWORD nFileSizeLow;
} WIN32_FILE_ATTRIBUTE_DATA, *LPWIN32_FILE_ATTRIBUTE_DATA;
[C++] 纯文本查看 复制代码
#include "stdafx.h"
DWORD ChangeTime (PFILETIME lptime)
{
FILETIME ftLocal; //文件时间结构
SYSTEMTIME st; //系统时间结构
FileTimeToLocalFileTime(lptime, &ftLocal); //调整为系统所在时区时间
FileTimeToSystemTime(&ftLocal, &st); //文件时间转为系统时间
_tprintf (TEXT("%4d年%2d月%2d日 %2d:%2d:%2d\n"), st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond);
return 0;
}
/*
* dwFileSizeHigh 文件大小高 32 位
* dwFileSizeLow 文件大小低 32 位
*/
DWORD FileSize (DWORD dwFileSizeHigh, DWORD dwFileSizeLow)
{
ULONGLONG llFileSize = dwFileSizeHigh;
llFileSize <<= sizeof(DWORD)*8; //左移 32 位
llFileSize += dwFileSizeLow;
_tprintf (TEXT("文件大小:\t%I64u 字节\n"), llFileSize); //I64 即为 unsigned __int64
return 0;
}
DWORD FileAttInfo (DWORD dwFileAtt)
{
if (dwFileAtt & FILE_ATTRIBUTE_ARCHIVE) {
_tprintf (TEXT("<存档> "));
}
if (dwFileAtt & FILE_ATTRIBUTE_COMPRESSED) {
_tprintf (TEXT("<压缩> "));
}
if (dwFileAtt & FILE_ATTRIBUTE_DIRECTORY) {
_tprintf (TEXT("<目录> "));
}
if (dwFileAtt & FILE_ATTRIBUTE_ENCRYPTED) {
_tprintf (TEXT("<加密> "));
}
if (dwFileAtt & FILE_ATTRIBUTE_HIDDEN) {
_tprintf (TEXT("<隐藏> "));
}
if (dwFileAtt & FILE_ATTRIBUTE_NORMAL) {
_tprintf (TEXT("<普通> "));
}
if (dwFileAtt & FILE_ATTRIBUTE_NOT_CONTENT_INDEXED) {
_tprintf (TEXT("<非内容索引服务> "));
}
if (dwFileAtt & FILE_ATTRIBUTE_OFFLINE) {
_tprintf (TEXT("<脱机> "));
}
if (dwFileAtt & FILE_ATTRIBUTE_OFFLINE) {
_tprintf (TEXT("<离线> "));
}
if (dwFileAtt & FILE_ATTRIBUTE_READONLY) {
_tprintf (TEXT("<只读> "));
}
if (dwFileAtt & FILE_ATTRIBUTE_REPARSE_POINT) {
_tprintf (TEXT("<再解析或符号链接> "));
}
if (dwFileAtt & FILE_ATTRIBUTE_SPARSE_FILE) {
_tprintf (TEXT("<再解析> "));
}
if (dwFileAtt & FILE_ATTRIBUTE_SYSTEM) {
_tprintf (TEXT("<系统文件> "));
}
if (dwFileAtt & FILE_ATTRIBUTE_TEMPORARY) {
_tprintf (TEXT("<临时文件> "));
}
_tprintf (TEXT("\n"));
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL, "chs");
WIN32_FILE_ATTRIBUTE_DATA wfad;
if (!GetFileAttributesEx(argv[1], GetFileExInfoStandard, &wfad)) {
_tprintf (TEXT("获取文件属性错误:%d\n"), GetLastError());
return (-1);
}
//显示文件时间
_tprintf (TEXT("创建时间:\t"));
ChangeTime (&wfad.ftCreationTime);
_tprintf (TEXT("最后访问时间:\t"));
ChangeTime (&wfad.ftLastAccessTime);
_tprintf (TEXT("最后修改时间:\t"));
ChangeTime (&wfad.ftLastWriteTime);
//显示文件大小
FileSize (wfad.nFileSizeHigh, wfad.nFileSizeLow);
//显示文件属性
FileAttInfo (wfad.dwFileAttributes);
return 0;
}