当前位置: 首页 > news >正文

C++ Windwos 文件操作

两种方式获取文件大小

INT64 MyGetFileSize(const CString& strFilePath)
{//获取文件大小INT64 nLen = 0;WIN32_FILE_ATTRIBUTE_DATA attr = { 0 };     //文件属性结构体if (FALSE == GetFileAttributesEx(strFilePath, GetFileExInfoStandard, &attr))        //获取文件属性{//获取文件大小失败}else{nLen = (ULONGLONG(attr.nFileSizeHigh) << 32) | ((attr.nFileSizeLow) & 0xFFFFFFFF);}return nLen;
}

获取目录大小

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;
}
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;
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 从0开始搭建自动化测试平台,构建自动化测试平台的最全指南!
  • 低代码开发技术在农村现代化中的应用探索
  • CSS学习14[重点]--定位、边偏移、定位模式
  • CompletableFuture.allOf() + join() 和 CountDownLatch 优缺点对比
  • 【SPIE独立出版,连续2届稳定EI检索!】2024年第三届信息学,网络与计算技术国际学术会议(ICINC2024,10月25-27)
  • 《UniVS: Unified and Universal Video Segmentation with Prompts as Queries》要点提炼
  • HarmonyOS学习(十)——网络编程
  • 经验笔记:在 TypeScript 中使用 Promise
  • Unreal Fest 2024 虚幻引擎影视动画制作的普遍问题
  • 第六章 类和对象(6)
  • Unity Lua方向的面试真题详解
  • 容易中、见刊快的6本医学期刊推荐!
  • React Native 0.76版本发布
  • redis入门之redis数据库的基础操作(内含常见面试题)
  • Linux学习-模拟容器网络
  • python3.6+scrapy+mysql 爬虫实战
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • android图片蒙层
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • hadoop集群管理系统搭建规划说明
  • magento2项目上线注意事项
  • Mysql数据库的条件查询语句
  • Sequelize 中文文档 v4 - Getting started - 入门
  • Vue组件定义
  • 警报:线上事故之CountDownLatch的威力
  • 两列自适应布局方案整理
  • 试着探索高并发下的系统架构面貌
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 自动记录MySQL慢查询快照脚本
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • No resource identifier found for attribute,RxJava之zip操作符
  • 阿里云移动端播放器高级功能介绍
  • ​学习一下,什么是预包装食品?​
  • #### go map 底层结构 ####
  • #Linux(权限管理)
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (1)Jupyter Notebook 下载及安装
  • (6)添加vue-cookie
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (笔记)M1使用hombrew安装qemu
  • (补)B+树一些思想
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (代码示例)使用setTimeout来延迟加载JS脚本文件
  • (二十四)Flask之flask-session组件
  • (附源码)ssm码农论坛 毕业设计 231126
  • (六)Hibernate的二级缓存
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (三十)Flask之wtforms库【剖析源码上篇】
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (算法)大数的进制转换
  • .bat批处理(十一):替换字符串中包含百分号%的子串