Windows上获取文件大小的几种方法及获取文件夹大小方法

让“文件夹大小”一目了然的神器——文件大小检查器 原因是这样的。我经常有这样的烦恼:在 Windows 文件管理器中查看文件夹大小时,总是找不到准确的答案?尤其是当文件夹中包含子文件夹时,Windows 自带的“属性”功能完全不告诉你它们的实际大小,只能一个个地去右键查看,既繁琐又浪费时间。 阅读详情

获取文件大小

Windows提供了好几个API函数来获取文件大小,还可以使用标准C和标准C++库函数来获取(当然了,标准库函数的底层实现也是调用了Windows API函数,效率上可能有所影响)。

const wchar_t* pFile = L"C:\\chromium.tar";//文件大小9,332,330,496 字节 32位整形无法装下
	HANDLE hFile = CreateFile(pFile, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
	if (INVALID_HANDLE_VALUE != hFile)
	{
		//方法一,使用Windows API GetFileSizeEx
		LARGE_INTEGER size;
		::GetFileSizeEx(hFile, &size);
		__int64 nSize1 = size.QuadPart;

		//方法二,使用Windows API GetFileSize
		DWORD dwHigh = 0;
		DWORD dwSize = ::GetFileSize(hFile, &dwHigh);
		__int64 nSize2 = ((__int64)dwHigh << 32) + dwSize;//对于大文件需要将高32位和低32位拼接成64位整形
		CloseHandle(hFile);

		//方法三,使用Windows API GetFileAttributesEx
		WIN32_FILE_ATTRIBUTE_DATA fileAttr;
		GetFileAttributesEx(pFile, GetFileExInfoStandard, &fileAttr);
		__int64 nSize3 = ((__int64)fileAttr.nFileSizeHigh << 32) + fileAttr.nFileSizeLow;

		//确定三种发发读取的文件大小一致
		assert(nSize1 == nSize2 && nSize2 == nSize3);
	}

	//方法四,使用标准C库函数实现
	FILE* fp = NULL;
	_wfopen_s(&fp, pFile, L"r");
	if (fp)
	{
		_fseeki64(fp, 0, SEEK_END);	//移动指针到文件末尾
		__int64 nSize4 = _ftelli64(fp);//获取文件大小。不要使用ftell,文件太大时32位整形会被截断
		_fseeki64(fp, 0, SEEK_SET); //移动文件指针到原来的位置(复原)
		//.........do something
		fclose(fp);
	}

	//方法五,使用标准C++库函数实现
	fstream ffile;
	ffile.open(pFile, ios::in | ios::binary | ios::_Nocreate);
	if (ffile.is_open())
	{
		ffile.seekg(0, ffile.end);
		__int64 fileSize = ffile.tellg();
		ffile.close();
	}

获取文件夹大小

通过遍历文件夹下面的文件,累加计算最后的总大小。

__int64 GetFolderSize(const wstring& strDir)
{
	__int64 nSize = 0;
	wstring strRootPath = strDir + L"\\";
	wstring strRoot = strRootPath + L"*.*";
	WIN32_FIND_DATA fd;
	HANDLE hFind = FindFirstFile(strRoot.c_str(), &fd);
	if (INVALID_HANDLE_VALUE == hFind)
		return nSize;
	while (FindNextFile(hFind, &fd))
	{
		if (wcscmp(fd.cFileName, L".") == 0 || wcscmp(fd.cFileName, L"..") == 0)
			continue;
		wstring strPath = strRootPath + fd.cFileName;
		if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
			nSize += GetFolderSize(strPath);
		else
		{
			HANDLE hFile = CreateFile(strPath.c_str(), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
			if (INVALID_HANDLE_VALUE == hFile)
				continue;
			LARGE_INTEGER size;
			if (::GetFileSizeEx(hFile, &size))
			{
				nSize += size.QuadPart;
			}
			CloseHandle(hFile);
		}
	}
	FindClose(hFind);
	return nSize;
}



Python3获取Windows下文件及文件夹大小 Python3.8 模块:内置os模块 简单版:提取指定盘和大小的文件及文件夹 # -*- coding:utf-8 -*- import os from os.path import join, getsize # 版本:提取指定盘和大小的文件及文件夹 def get_paths_size(dirs, maxnum): # 提取指定文件夹和大小的函数 print(... 阅读详情

相关推荐

windows上Bat脚本,轮询监视目录文件大小,超过上限就删除该目录下所有目录和文件

把目录和大小改成你自己的,就可以了,然后加入开机自启动的任务里面。备注很详细 @echo off & cd /d "%~dp0" set BatTitle=50G color 0a & mode 55,5 & title %BatTitle% setlocal enabledelayedexpansion ::设置需要监测的文件夹路径 set Folder=E:...

qq_36622490的博客 2439

C# Winform 获取文件大小

/// /// 所给路径中所对应的文件大小 /// /// /// public static long FileSize(string filePath) { //定义一个FileInfo对象,是指与filePath所指向的文件相关联,以获取其大小

云上人间钦自赏 4770

查看文件夹大小的4种方法,总有一种是你喜欢的

查看文件夹大小的4种方法,总有一种是你喜欢的。

wyxtx的博客 1万+

C# 获取文件或者文件夹大小

【代码】C# 获取文件或者文件夹大小。

LcFireRabbit的博客 1351

Window下获取文件大小

Window下获取文件大小在Windows环境下,获取文件大小是一个相对容易的任务。在本文中,我将向你介绍两种获取文件大小的方法。

2301_79325339的博客 703

C++ string类型的字符串长度获取的三种方法

(1).用string的成员方法length()获取字符串长度                length()比较直观,表示的就是该字符串的长度。 [cpp] view plain copy  print? #include    #include        using namespace std;   int main()   {  

程序猿老樊的博客 36万+

通过winapi获取文件大小

通过winapi获取文件大小 编者:李国帅 qq:9611153 微信lgs9611153 时间:2010-7-12 背景原因: 获取文件大小有多种方式,这里介绍一种通过GetFileAttributesEx函数获取文件大小的方法。   所需资源: 在vc中进行测试。   解决方案: long  getFileSize(const wchar_t * filename...

lgs7907 1955

Windows C++ 实现文件的查找与遍历的示例代码

在 Windows 系统下使用 C++ 编程语言,可以通过以下示例代码实现文件的查找与遍历。该代码示例演示了如何在指定目录下查找特定扩展名的文件,并遍历找到的文件列表。请注意,在使用此代码示例时,确保目标目录存在并具有适当的读取权限,以避免出现访问权限错误。函数用于查找指定目录下特定扩展名的文件,并将找到的文件路径存储在一个字符串向量。函数进行文件的查找。函数中,我们可以指定要查找的目录路径和文件扩展名,然后调用。函数继续获取下一个匹配的文件,直到没有更多的文件匹配为止。函数进行查找并打印找到的文件路径。

PixelInk的博客 340

java file.length 单位_java 获取文件夹大小,文件大小(返回大小单位),文件个数

import java.io.File;import java.text.DecimalFormat;import java.io.FileInputStream;public class GetFileSize{public long getFileSizes(File f) throws Exception{//取得文件大小long s=0;if (f.exists()) {FileInput...

weixin_39724793的博客 2580

MFC实现文件夹遍历及文件大小统计

MFC(Microsoft Foundation Classes)是一个强大的C++类库,它封装了Windows API,并为Windows程序开发提供了对象导向的框架。MFC库最初设计是为了简化Visual C++的开发,但其丰富的功能使其成为许多专业软件开发者的首选。

weixin_33068055的博客 918

Windows中查看文件夹大小的技巧

系统隐藏文件通常是指那些操作系统或程序认为不应该被用户直接修改或删除的文件,它们通常对于系统正常运行至关重要。而用户自定义隐藏则是指用户为了管理方便,将自己创建的文件或文件夹隐藏起来。例如,在Windows系统中,文件可以被设置为隐藏属性,通过在文件属性中勾选“隐藏”复选框来实现。在默认情况下,文件资源管理器不会显示这些隐藏文件和文件夹。除了基本的按大小排序功能外,Windows资源管理器还允许用户自定义排序规则。

weixin_28922227的博客 1万+

Windows开发--获取文件大小及获取文件夹大小的方法

获取文件大小 Windows提供了好几个API函数来获取文件大小,还可以使用标准C和标准C++库函数来获取(当然了,标准库函数的底层实现也是调用了Windows API函数,效率上可能有所影响)。 const wchar_t* pFile = L"C:\\chromium.tar";//文件大小9,332,330,496 字节 32位整形无法装下 HANDLE hFile = Create

Barry 6664

硬盘空间管理:如何查看文件大小

Windows系统主要使用两种文件系统:FAT32和NTFS。FAT32是最老的文件系统,适用于早期的Windows版本,但有大小限制,最大只支持2TB的硬盘分区,且单个文件最大不超过4GB。相比之下,NTFS是更现代的文件系统,支持的硬盘分区和文件大小没有FAT32的限制。NTFS提供了更多的安全性和性能优化,如日志记录、权限管理、磁盘配额等。NTFS文件系统下的文件大小没有明确的上限,受实际磁盘空间和系统配置的限制。理解这些基础知识有助于更有效地管理文件和文件夹大小。

weixin_35879493的博客 2274

java怎么判断文件大小_java判断文件大小

public class GetFileSize{public long getFileSizes(File f) throws Exception{//取得文件大小long s=0;if (f.exists()) {FileInputStream fis = null;fis = new FileInputStream(f);s= fis.available();} else {f.create...

weixin_30301989的博客 4653

Hierarchical-Localization 环境配置与依赖管理全攻略

本文提供了Hierarchical-Localization(hloc)视觉定位工具箱从零开始的环境配置与依赖管理全攻略。针对Windows、Ubuntu和macOS三大操作系统,详细解析了Python版本选择、PyTorch与CUDA版本匹配、pycolmap版本锁定等核心依赖的安装步骤,并汇总了权重文件格式、NumPy版本、路径配置等常见问题的排查与解决方案,旨在帮助用户高效搭建稳定的hloc开发环境。

weixin_29066781的博客 335

FortiOS路径遍历漏洞CVE-2022-41328实战复现:从环境搭建到漏洞利用全记录

本文深入解析FortiOS路径遍历漏洞CVE-2022-41328,从漏洞背景、影响范围到技术原理进行全面剖析。提供详细的漏洞复现环境搭建步骤和实战利用方法,并给出官方修复方案与临时缓解措施,帮助企业有效防御此类防火墙漏洞风险。

weixin_30485379的博客 522

Java windows系统获取磁盘、文件夹以及文件大小,同时提供K\M\G转换方法

一、获取所有磁盘大小以及剩余空间(默认大小为B)二、获取固定盘符大小(默认大小为B)三、获取文件夹大小四、获取单独文件大小五、大小格式化方法 二、获取固定盘符大小(默认大小为B) 三、获取文件夹大小 四、获取单独文件大小 五、大小格式化方法

授人以渔的博客 3978

PCL1.12.1+VTK9.1+Qt5.14.2实战:解决QVTKOpenGLNativeWidget点云渲染窗口初始化报错问题

本文针对PCL1.12.1、VTK9.1与Qt5.14.2集成开发中,QVTKOpenGLNativeWidget点云渲染窗口初始化时出现的报错与黑屏问题,提供了深度分析与两种实战解决方案。核心在于理解VTK版本升级导致的渲染窗口类型不匹配,并指导开发者通过显式创建vtkGenericOpenGLRenderWindow或利用窗口ID嵌入,正确初始化并绑定可视化组件,从而稳定实现点云渲染。

weixin_29284657的博客 221

获取文件大小 java_java file对象获取文件大小

import java.io.File;import java.text.DecimalFormat;import java.io.FileInputStream;public class GetFileSize{public longgetFileSizes(File f) throws Exception{//取得文件大小long s=0;if (f.exists()) {FileInputS...

weixin_42532938的博客 1219

Windows 11下JDK 21与JMeter 5.6.3环境配置全攻略

环境变量是操作系统管理软件路径与执行权限的核心机制,它通过预设的键值对,指引系统在调用命令时定位可执行文件。理解其工作原理,是解决软件安装后“命令未找到”等问题的关键。对于Java生态而言,正确配置JAVA_HOME和Path变量,不仅能让java、javac等基础命令全局可用,更是Maven、Gradle乃至JMeter等众多工具链顺畅运行的基石。JMeter作为一款基于Java开发的经典性能测试与接口测试工具,其稳定运行高度依赖健全的Java环境。本文聚焦于在Windows 11系统上,为JDK 21与

weixin_30940783的博客 450

uniapp - 强力解决 swiper 轮播图内嵌套视频导致滑动不流畅卡顿问题,轮播滑块视图容器里既有图片也有视频video组件共同存在出现滑动切换特别卡,轮播组件包裹视频播放器加载慢及层级过高解决

uni-app,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,swiper,轮播图,轮播图嵌套视频,卡顿,加载慢,左右滑动不流畅,很卡,滑动过快就会卡住,uniapp使用swiper组件里嵌套视频与图片如何解决卡顿问题,详细解决教程,swiper里有视频video,播放器,视频+图片轮播,层级过高及卡顿问题,没等看完视频就自动切换了,报错,无法加载播放,uniapp的App安卓苹果端,video老是加载,APP端video组件播放视频卡顿,抖音,快手,上下滑动视

🏆 前端领域优质创作者 1万+

java 获取文件夹大小,文件大小,文件个数

http://blog.sina.com.cn/s/blog_45096c6a0100btse.html package tony; import java.io.File; import java.text.DecimalFormat; import java.io.FileInputStream; public class GetFileSize { public long

jiangxinyu的专栏 1409

【2024遥感应用组一等奖】基于时空融合和水量平衡法的若尔盖高原水源涵养功能评价

考虑到水源涵养的概念和尺度特征、数据的可获得性、模型的模拟精度等,构建了一种基于遥感、气象和水量平衡原理的草原湿地水源涵养评价方法,估算若尔盖湿地近23年(2000-2022)来的水源涵养量。若尔盖湿地是我国黄河源区的重要水源地,所以本研究以若尔盖湿地的水源涵养功能评估为科学问题,基于遥感数据、GIS数据等,利用水量平衡原理,发展计算简单、便捷、数据易获取的“水源涵养估算方法”,科学估算若尔盖湿地水源涵养服务量,探究其时空动态变化趋势及其影响因素;公式中,Z1和Z2为两个不同高度面的高度,u为摩擦速率;

JData_Engineer的博客 239
上一篇: 自己开发简单web服务器二(Node.js实现)
下一篇: 详解YUV420数据格式
疯狂-的-蜗牛
博客等级 码龄16年 427粉丝 104原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值