美文网首页
4.12 获取设置文件属性

4.12 获取设置文件属性

作者: f675b1a02698 | 来源:发表于2017-09-14 16:16 被阅读0次

效果

源码

#include

#include

DWORD ShowFileAttributes(LPSTR szPath);//获取并显示文件属性

DWORD ShowFileTime(LPFILETIME lptime);//转换文件时间并打印

DWORD ShowFileSize(DWORD dwFileSizeHigh, DWORD dwFileSizeLow);//打印文件大小信息

DWORD ShowFileAttrInfo(DWORD dwAttribute);//打印文件属性

DWORD SetFileHiddenAndReadonly(LPSTR szFileName);//将指定文件设置为隐藏和只读

int main(int argc, PCHAR argv[]){

//待设置文件必须存在

if (argc != 3){

printf("请输入参数:\n");

printf("显示第一个参数指定的文件的属性,时间,大小.\n");

printf("将第二个参数的属性设置为隐藏和只读.\n");

return 1;

}

ShowFileAttributes(argv[1]);

SetFileHiddenAndReadonly(argv[2]);

return 0;

}

//将指定文件设置为隐藏和只读

DWORD SetFileHiddenAndReadonly(LPSTR szFileName){

DWORD dwFileAttributes = GetFileAttributes(szFileName);//获取原来文件的属性

//将只读和隐藏属性附加到原来的文件属性上

dwFileAttributes |= FILE_ATTRIBUTE_READONLY;

dwFileAttributes |= FILE_ATTRIBUTE_HIDDEN;

//设置文件属性并判断是否成功

if (SetFileAttributes(szFileName, dwFileAttributes)){

printf("文件 %s 的只读和隐藏属性设置成功\n", szFileName);

} else{

printf("文件 %s 属性设置失败: %d\n", GetLastError());

}

return 0;

}

//打印文件属性

DWORD ShowFileAttrInfo(DWORD dwAttribute){

printf("文件属性: ");

if (dwAttribute & FILE_ATTRIBUTE_ARCHIVE){

printf("ARCHIVE");

}

if (dwAttribute & FILE_ATTRIBUTE_COMPRESSED){

printf("压缩");

}

if (dwAttribute & FILE_ATTRIBUTE_DIRECTORY){

printf("目录");

}

if (dwAttribute & FILE_ATTRIBUTE_ENCRYPTED){

printf("加密");

}

if (dwAttribute & FILE_ATTRIBUTE_HIDDEN){

printf("隐藏");

}

if (dwAttribute & FILE_ATTRIBUTE_NORMAL){

printf("NORMAL");

}

if (dwAttribute & FILE_ATTRIBUTE_OFFLINE){

printf("OFFLINE");

}

if (dwAttribute & FILE_ATTRIBUTE_READONLY){

printf("只读");

}

if (dwAttribute & FILE_ATTRIBUTE_SPARSE_FILE){

printf("SPARSE");

}

if (dwAttribute & FILE_ATTRIBUTE_SYSTEM){

printf("系统文件");

}

if (dwAttribute & FILE_ATTRIBUTE_TEMPORARY){

printf("临时文件");

}

printf("\n");

return 0;

}

//打印文件大小信息

DWORD ShowFileSize(DWORD dwFileSizeHigh, DWORD dwFileSizeLow){

ULONGLONG liFileSize;

liFileSize = dwFileSizeHigh;

liFileSize <<= sizeof(DWORD)* 8;//左移32位/4字节

liFileSize += dwFileSizeLow;//加上低4字节的值

printf("文件大小: %I64u 字节\n", liFileSize);

return 0;

}

//转换文件时间并打印

DWORD ShowFileTime(LPFILETIME lptime){

FILETIME ftLocal;//文件时间结构

SYSTEMTIME st;//系统时间结构

FileTimeToLocalFileTime(lptime, &ftLocal);//调整为系统所在时区时间

FileTimeToSystemTime(&ftLocal, &st);//将文件时间转换为SYSTEMTIME格式便于显示

//显示时间信息字符串

printf("%4d 年 %#02d 月 %#02d 日, %#02d:%#02d:%#02d\n", st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond);

return 0;

}

//获取并显示文件属性

DWORD ShowFileAttributes(LPSTR szPath){

WIN32_FILE_ATTRIBUTE_DATA wfad;//文件属性结构

printf("文件: %s\n", szPath);

//获取文件属性

if (!GetFileAttributesEx(szPath, GetFileExInfoStandard, &wfad)){

printf("获取文件属性错误: %d\n", GetLastError());

return 1;

}

printf("创建时间: ");

ShowFileTime(&(wfad.ftCreationTime));

printf("最后访问时间: ");

ShowFileTime(&(wfad.ftCreationTime));

printf("最后修改时间: ");

ShowFileTime(&(wfad.ftCreationTime));

ShowFileSize(wfad.nFileSizeHigh,wfad.nFileSizeLow);//文件大小

ShowFileAttrInfo(wfad.dwFileAttributes);//文件属性

return 0;

}

相关文章

网友评论

      本文标题:4.12 获取设置文件属性

      本文链接:https://www.haomeiwen.com/subject/eygqsxtx.html