使用的API
Windows API | 功能 |
---|
GetFileAttributesEx | 获取文件属性 |
SetFileAttributes | 修改文件属性 |
测试代码
#include <Windows.h>
#include <stdio.h>
DWORD ShowFileTime(PFILETIME lptime) {
FILETIME ftLocal;
SYSTEMTIME st;
FileTimeToLocalFileTime(lptime, &ftLocal);
FileTimeToSystemTime(&ftLocal, &st);
printf("%4d年%#02d月%#02d日 %#02d:%#02d:%#02d\n", st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond);
return 0;
}
DWORD ShowFileSize(DWORD dwFileSizeHigh, DWORD dwFileSizeLow) {
ULONGLONG liFileSize;
liFileSize = dwFileSizeHigh;
liFileSize <<= 32;
liFileSize += dwFileSizeLow;
printf("文件大小:\t%I64u 字节\n", liFileSize);
return 0;
}
DWORD ShowFileAttrInfo(DWORD dwAttribute) {
printf("文件属性:\t");
if (dwAttribute & FILE_ATTRIBUTE_ARCHIVE) {
printf("<ARCHIVE>");
}
if (dwAttribute & FILE_ATTRIBUTE_COMPRESSED) {
printf("<COMPRESSED>");
}
if (dwAttribute & FILE_ATTRIBUTE_READONLY) {
printf("<READONLY>");
}
return 0;
}
DWORD ShowFileAttributes(LPCTSTR szPath) {
WIN32_FILE_ATTRIBUTE_DATA wfad;
printf("文件:%ls\n", szPath);
if (!GetFileAttributesEx(szPath, GetFileExInfoStandard, &wfad)) {
printf("获取文件属性失败: %d\n", GetLastError());
return 1;
}
printf("创建时间:\t");
ShowFileTime(&(wfad.ftCreationTime));
printf("访问时间:\t");
ShowFileTime(&(wfad.ftLastAccessTime));
printf("修改时间:\t");
ShowFileTime(&(wfad.ftLastWriteTime));
ShowFileSize(wfad.nFileSizeHigh, wfad.nFileSizeLow);
ShowFileAttrInfo(wfad.dwFileAttributes);
return 0;
}
int main() {
ShowFileAttributes(TEXT("C:\\Users\\win10\\source\\repos\\Project14\\main.cpp"));
return 0;
}
显示效果

修改文件属性
代码
#include <Windows.h>
#include <stdio.h>
DWORD SetFileHiddenAndReadOnly(LPCTSTR szFileName) {
DWORD dwFileAttributes = GetFileAttributes(szFileName);
dwFileAttributes |= FILE_ATTRIBUTE_READONLY;
dwFileAttributes |= FILE_ATTRIBUTE_HIDDEN;
if (!SetFileAttributes(szFileName, dwFileAttributes))
{
printf("文件属性设置失败");
}
else {
printf("文件属性设置成功");
}
return 0;
}
int main() {
SetFileHiddenAndReadOnly(TEXT("C:\\Users\\win10\\source\\repos\\Project15\\book.txt"));
return 0;
}
效果
