首页 > 系统相关 >使用Windows API获取文件,或者文件夹的大小

使用Windows API获取文件,或者文件夹的大小

时间:2023-04-27 10:12:34浏览次数:47  
标签:info Windows API fd 文件夹 hd size

获取一个文件的大小:

通过使用GetFileSizeEx获取文件的大小,

LONGLONG FileSize(CString file) const noexcept
{
    HANDLE fp = CreateFile(file.GetBuffer(), GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
    LARGE_INTEGER info;
    memset(&info, 0, sizeof(info));
    GetFileSizeEx(fp, &info);
    return info.QuadPart;
}

没有什么细节要说的,API嘛,知道如何使用即可。

 

获取一个文件夹的大小,依然是需要遍历文件夹获取每一个文件的大小,然后将其加起来就可以了

LONGLONG DirectorySize(CString path) const noexcept
{
    __int64 size = 0;
    WIN32_FIND_DATA fd;
    memset(&fd, 0, sizeof(fd));
    ::SetCurrentDirectory(path.GetBuffer());      // 设置当前的工作路径
    HANDLE hd = ::FindFirstFile(_T("*.*"), &fd);      // 查找任意文件
    if (hd != INVALID_HANDLE_VALUE) {                // 如果不是一个空的文件夹
        do
        {
            if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {        // 枚举到的第一个文件是不是文件夹
                CString name = fd.cFileName;
                if (name != _T(".") && name != _T("..")) {        // 如果不是系统文件夹
                    size += DirectorySize(fd.cFileName);
                    ::SetCurrentDirectory(_T(".."));
                }
            }
            else {
                size += FileSize(fd.cFileName);
            }
        } while (FindNextFile(hd, &fd));
        ::FindClose(hd);
    }
    return size;
}

API的使用方法可以参考微软的在线文档。

 

标签:info,Windows,API,fd,文件夹,hd,size
From: https://www.cnblogs.com/Super-biscuits/p/17358152.html

相关文章

  • 创建Windows锁定桌面快捷方式并固定到任务栏
    1.创建快速锁定计算机的快捷方式1.首先,右击桌面,选择新建,选择快捷方式,新建一个快捷方式2.在出现的对话框中键入如下值%windir%/system32/rundll32.exeuser32.dll,LockWorkStation3.(注区分大小写))然后为快捷方式启个名称即可4.右键点击创建好的桌面快捷方式选择固定到任......
  • Windows服务的启动类型
    SERVICE_BOOT_START 0x00000000 只适用于驱动SERVICE_SYSTEM_START 0x00000001 只适用于驱动,在IoInitSystem中启动SERVICE_AUTO_START0x00000002 由服务控制管理器在系统启动阶段启动SERVICE_DEMAND_START0x00000003按需启动,PnP管理器(针对设备驱动程序)或服务......
  • windows忘记登录密码处理方法
    1.重新启动电脑,连续按F8键,选择命令提示的安全模式2.选择Administrator3,打开管理员命令窗口4.输入命令:netuser查找用户帐户:显示结果如下:-------------------------------------------------------------------------------AdministratorDefaultAccount......
  • Java8使用Stream API转换Map遇到的2种异常报错和解决思路
    问题java8提供了StreamAPI,配合Lambda表达式,让开发者能对集合对象进行便利、高效的操作。在日常业务开发中,有个经常用到的场景是将List类型对象转换为Map类型对象,方便后续操作。在java8之前,这种转换需要先new一个Map对象,遍历list然后通过Map#put来初始化。使用java8后,可方便的......
  • windows安装mariaDB失败,服务不能启动
    (lay旧文章整理)于2019-02-0620:17:59发布过年了,在老家闲余时间想敲敲代码,发现在安装mariaDb的时候一直报错错误信息:Service‘MySQL’(MySQL)Faildtostart,Verifythatyouhavesuffcientprivilegestostartsystemservices.服务的MySQL(MySQL)启动错误,确认你有权限启......
  • windows驱动开发环境搭建
    下载WDK,我是在http://www.microsoft.com/en-us/download/details.aspx?id=11800下载的,版本7.1.0。下载VisualDDK,下载地址:http://visualddk.sysprogs.org/download/先安装WDK,然后安装VisualDDK,都直接点下一步就可以了,没有特别设置。安装好后,打开VS2010,会出现VisualDDK的项目类型,新......
  • 明解STM32—GPIO应用设计篇之API函数及配置使用技巧
    一、前言        本篇开始对STM32的GPIO在实际开发设计中的使用配置和技巧进行探讨,可以先去回顾下之前介绍的GPIO的相关理论基础知识包括基本结构,工作模式和寄存器原理。        了解过STM32的GPIO相关的理论知识,这样在应用GPIO开发过程中,能更好的理解GPIO的特......
  • 明解STM32—GPIO应用设计篇之API函数及配置使用技巧
     一、前言本篇开始对STM32的GPIO在实际开发设计中的使用配置和技巧进行探讨,可以先去回顾下之前介绍的GPIO的相关理论基础知识包括基本结构,工作模式和寄存器原理。了解过STM32的GPIO相关的理论知识,这样在应用GPIO开发过程中,能更好的理解GPIO的特点,应用起来会更加的得心应手。后续将......
  • Talend API Tester 安装与使用
    一、安装下载“Talend_API_Tester_25.4.crx”,打开开发人员模式,将插件拖进去即可安装。Chrome、Edge、360浏览器均可使用。 二、使用支持7种方法支持导入随便测一个 Done.......
  • windows下mysql5.7安装,及python操作mysql
    windows下mysql5.7安装mysql5.7官方下载:https://www.mysql.com/可参考教程:https://blog.csdn.net/qq_39715000/article/details/123534326?注意:一:my.ini配置文件:如果保存目录以t开头,默认会将t转义为空格(解决方法加这个\\):[mysqld]#端口号port=3306#mysql-5.7.27-winx6......