[作者]
常用网名: 猪头三
出生日期: 1981.XX.XX
企鹅交流: 643439947
个人网站: 80x86汇编小站
编程生涯: 2001年~至今[共24年]
职业生涯: 22年
开发语言: C/C++、80x86ASM、Object Pascal、Objective-C、C#、R、Python、PHP、Perl、
开发工具: Visual Studio、Delphi、XCode、C++ Builder、Eclipse
技能种类: 逆向 驱动 磁盘 文件 大数据分析
涉及领域: Windows应用软件安全/Windows系统内核安全/Windows系统磁盘数据安全/macOS应用软件安全
项目经历: 股票模型量化/磁盘性能优化/文件系统数据恢复/文件信息采集/敏感文件监测跟踪/网络安全检测
专注研究: 机器学习、股票模型量化、金融分析
[序言]
在现代软件开发中, 特别是在macOS平台上, 获取目录大小是一项常见且重要的任务. 无论是为了优化用户体验(如在文件管理应用中显示目录占用空间), 还是为了系统资源的管理(如监控磁盘使用情况), 高效计算目录大小都显得尤为关键. Delphi 12作为一款强大的跨平台开发工具, 为macOS 64位应用程序提供了丰富的API支持, 使得能够轻松实现这一功能.
[代码演示]
procedure TForm_main.Bn_GetFolderSizeClick(Sender: TObject);
const
KB = 1024;
MB = KB * 1024;
GB = MB * 1024;
var
array_AllFiles: TArray<string>; // 存储目录下所有文件路径的数组
str_FolderPath, str_FolderSize: string; // 目录路径和格式化后的大小字符串
int_FolderSize: Int64; // 目录总大小(字节)
begin
// 获取用户桌面上的DemoApp目录路径
str_FolderPath := TPath.Combine(TPath.GetHomePath, 'Desktop/DemoApp');
// 获取目录下所有文件的路径(包括子目录)
array_AllFiles := TDirectory.GetFiles(str_FolderPath, '*', TSearchOption.soAllDirectories);
// 初始化目录大小
int_FolderSize := 0;
// 遍历所有文件并累加其大小
for var str_FilePath: string in array_AllFiles do
int_FolderSize := int_FolderSize + TFile.GetSize(str_FilePath);
// 根据目录大小选择合适的单位(GB, MB, KB, Bytes)
if int_FolderSize >= GB then
str_FolderSize := FormatFloat('0.00', int_FolderSize / GB) + ' GB'
else if int_FolderSize >= MB then
str_FolderSize := FormatFloat('0.00', int_FolderSize / MB) + ' MB'
else if int_FolderSize >= KB then
str_FolderSize := FormatFloat('0.00', int_FolderSize / KB) + ' KB'
else
str_FolderSize := Format('%d Bytes', [int_FolderSize]);
// 显示目录大小
TDialogService.ShowMessage('目录大小: ' + str_FolderSize + ' ' + IntToStr(int_FolderSize));
end; // End Bn_GetFolderSizeClick()
[代码说明]
* 获取目录路径
* 使用TPath.GetHomePath获取用户主目录路径, 再通过TPath.Combine与'Desktop/DemoApp'组合, 生成目标目录路径.
* 这种方法跨平台兼容, 适用于macOS环境.
* 获取文件列表
* 调用TDirectory.GetFiles, 传入目录路径、通配符'*'和搜索选项TSearchOption.soAllDirectories, 以递归获取目录及其子目录中的所有文件路径.
* 返回结果存储在array_AllFiles数组中
* 计算目录大小
* 用for循环遍历array_AllFiles, 调用TFile.GetSize获取每个文件的大小, 并累加到int_FolderSize中.
[总结]
一个简洁且实用的代码示例, 展示了在Delphi 12中为macOS 64位应用程序开发中获取目录大小的完整实现过程. 从路径获取、文件遍历到大小计算和结果显示, 每一步都清晰明了, 易于理解和复用.
Delphi 12开发macOS App获取目录大小
1万+

被折叠的 条评论
为什么被折叠?



