WINDOWS API学习笔记之获取文件属性和设置文件隐藏

最近一直在学习windows API,但是经常会把之前学过的函数忘了 再找的时候又不方便 于是把它写在这里 一来可以当作自己学习的备忘,二来可以作为向我一样在奋斗的。。。 呃。。。有志青年(哈哈~小小鄙视自己一把)作为参考,噢呜~废话少说,上菜。。。

WINDOWS API学习笔记之获取文件属性和设置文件隐藏

#include<Windows.h>
#include<iostream>
using namespace std;
DWORD ShowFileAttributes(LPTSTR szPath);
DWORD ShowFileTime(PFILETIME lptime);
DWORD ShowFileAttrInfo(DWORD dwAttribute);
DWORD SetFileHiddenAndReadonly(LPSTR szFileName);
DWORD ShowFileSize(DWORD dwFileSizeHigh,DWORD dwFileSizeLow);
int main(int argc,PCHAR argv[])
{
    if (argc!=3)
    {
        printf("请输入参数\n");
        printf("显示第一个参数指定的文件属性、时间、大小\n");
        printf("将第二个参数的属性设置为隐藏、只读\n");
        system("pause");
        return 1;
    }
    ShowFileAttributes(argv[1]);
    SetFileHiddenAndReadonly(argv[2]);
    system("pause");
    return 0;
}

/*ShowFileAttributes(LPSTR szPath)
*功能:获取并显示文件属性
*调用ShowFileTime、ShowFileSize和ShowFileAttrInfo
*参数:LPTSTR szPath 获取并显示文本属性
*返回值:0代表执行完成 ,1代表发生错误
**************/
DWORD ShowFileAttributes(LPTSTR szPath)
{
    //文件属性结构
    WIN32_FILE_ATTRIBUTE_DATA wfad;
    printf("文件:%s\n",szPath);
    //获取文件属性
    if (!GetFileAttributesEx(szPath,
        GetFileExInfoStandard,
        &wfad
        ))
    {
        printf("获取文件属性错误:%d",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;
}

/*DWORD ShowFileTime(PFILETIME lptime)
*功能:转换文件时间并打印
*参数:PFILETIMR lptime 指向文件的时间的指针
*返回值:0
**********************/
DWORD ShowFileTime(PFILETIME lptime)
{
    //文件时间结构
    FILETIME ftLocal;
    //系统时间结构
    SYSTEMTIME st;
    //调整为系统所在时区的时间
    FileTimeToLocalFileTime(
        lptime,
        &ftLocal
        );
    //将文件时间转换为SYSTEMTIME格式,便于显示
    FileTimeToSystemTime(
        lptime,
        &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)
*功能:打印文件大小信息
*参数:DWORD dwFileSizeHigh,文件大小高32位
*      DWORD dwFileSizeLow ,文件大小低32位
**********************************/
DWORD ShowFileSize(DWORD dwFileSizeHigh,DWORD dwFileSizeLow)
{
    ULONGLONG liFileSize;
    liFileSize = dwFileSizeHigh;
    //移动到32位
    liFileSize<<=sizeof(DWORD)*8;
    liFileSize+=dwFileSizeLow;
    printf("文件大小:\t%I64u字节\n",liFileSize);
    return 0;

}

/*DWORD ShowFileAttrInfo(DWORD dwAttribute)
*功能:打印文件属性
*参数:DWORD dwAttribute,文件属性
**************************************/
DWORD ShowFileAttrInfo(DWORD dwAttribute)
{
    //依次判断属性,并显示
    printf("文件属性:\t");
    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 SetFileHiddenAndReadonly(LPSTR szFileName)
*功能:将指定文件设置为隐藏和只读
*参数:LPSTR szFileName,文件路径
*********************************************/
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("属性设置;%d",GetLastError());
    }
    return 0;
}
最后运行结果如图
![哦,小小提示下,这里哦可是用的WIN 10 哈哈~](http://img.blog.csdn.net/20150825162626635)
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值