Linux 与 Windows 计算文件夹大小
{
#ifndef WIN32
DIR *dp;
struct dirent *entry;
struct stat statbuf;
if((dp = opendir(dir)) == NULL)
{
fprintf(stderr ,"cannot open dirctory : %s \n", dir);
return ;
}
chdir(dir);//注意这里改变了工作路径
while((entry = readdir(dp)) != NULL)
{
lstat(entry->d_name, &statbuf);
if(S_ISDIR(statbuf.st_mode))
{
if(strcmp(".", entry->d_name) == 0 || strcmp("..", entry->d_name) == 0)
{
continue;
}
else
{
fsize += statbuf.st_size;
UTIL_CountFileSize(entry->d_name, fsize);
}
}
fsize += statbuf.st_size;
}
chdir("..");//needed
closedir(dp);
#else
char szFind[MAX_PATH];
char szFileTemp[MAX_PATH];
WIN32_FIND_DATA FindFileData;
strcpy(szFind,dir);
strcat(szFind,"\\*.*");
int actcnt = MultiByteToWideChar(CP_ACP, NULL, szFind, -1, NULL, 0);
TCHAR * pbuffer = new TCHAR[actcnt + 1];
memset(pbuffer, 0, sizeof(pbuffer));
MultiByteToWideChar(CP_ACP, NULL, szFind, -1, pbuffer, actcnt);
HANDLE hFind = ::FindFirstFile(pbuffer ,&FindFileData);
if(INVALID_HANDLE_VALUE == hFind)
return;
while(TRUE)
{
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if(FindFileData.cFileName[0]!='.')
{
DWORD dwMinSize = WideCharToMultiByte (CP_OEMCP, NULL, FindFileData.cFileName ,-1, NULL, 0, NULL, 0);
char *cTemp = new char[dwMinSize + 1];
memset(cTemp, 0 , sizeof(cTemp));
WideCharToMultiByte (CP_OEMCP, NULL, FindFileData.cFileName ,-1, cTemp, sizeof(FindFileData.cFileName)/sizeof(FindFileData.cFileName[0]), NULL, 0);
sprintf(szFileTemp,"%s\\%s", dir, cTemp);
UTIL_CountFileSize(szFileTemp,fsize);
}
}
else
{
fsize += (long) FindFileData.nFileSizeLow;
}
if(!FindNextFile(hFind,&FindFileData)) break;
}
FindClose(hFind);
#endif
}
其中以下代码是 WCHAR 与 char * 之间的转换 (参考前一篇文章)
TCHAR * pbuffer = new TCHAR[actcnt + 1];
memset(pbuffer, 0, sizeof(pbuffer));
MultiByteToWideChar(CP_ACP, NULL, szFind, -1, pbuffer, actcnt);
相反转换
char *cTemp = new char[dwMinSize + 1];
memset(cTemp, 0 , sizeof(cTemp));
WideCharToMultiByte (CP_OEMCP, NULL, FindFileData.cFileName ,-1, cTemp, sizeof(FindFileData.cFileName)/sizeof(FindFileData.cFileName[0]), NULL, 0);
Linux 与 Windows 计算文件夹大小相关推荐
- Linux中查看各文件夹大小(扫盘)
df -h ./ du -hs ./ du -h /ifs4/BC_RD/USER/lizhixin/my_project/human_chr22 | grep [[:digit:]+]G du [- ...
- linux按照目录大小降序排列,Linux du命令查看文件夹大小并按降序排列
1. df -lh 2. du -s /usr/* | sort -rn 这是按字节排序 3. du -sh /usr/* | sort -rn 这是按兆(M)来排序 4.选出排在前面的10个 du ...
- linux du命令 前多少个,Linux du命令查看文件夹大小并按降序排列
1. df -lh 2. du -s /usr/* | sort -rn 这是按字节排序 3. du -sh /usr/* | sort -rn 这是按兆(M)来排序 4.选出排在前面的10个 du ...
- Linux中查看各文件夹大小命令du -h --max-depth=1
du [-abcDhHklmsSx] [-L <符号连接>][-X <文件>][--block-size][--exclude=<目录或文件>] [--max-de ...
- Linux查看当前文件目录文件夹大小 (附:Linux文件文件夹大小查看全集)
1.查看当前文件目录各个文件夹大小 du -h --max-depth=1 查看指定目录 du -h --max-depth=1 /path 2. 查看当前目录下所有目录及子目录大小 du -h - ...
- Python 计算文件夹大小、文件大小
1.获取文件夹的文件 import os pathvar=r'D:\pycharm project\day17' lst=os.listdir(pathvar) print(lst) 2.计算文件的大 ...
- linux下限制一个文件夹大小的方法
linux上有时由于一些特殊的用途,我们需要限制一个文件夹的大小.核心方法都是把需要限制的文件夹挂载在一个大小固定的分区上,下面有两种方法可以实现: 使用ramdisk linux可以把一部分内存mo ...
- linux添加windows字体文件夹里,如何把Windows下的字体添加到Linux中
如何把Windows下的字体添加到Linux中 Linux(Fedora/Ubuntu/CentOS)的字体实在不尽如人意,而且在网页及文档显示时很多字无法显示出来,特别多的空白和乱码,其实,我们可以 ...
- Linux系统查看各文件夹大小的命令du -lh命令
du -lh --max-depth=1 查看各文件夹大小的命令. -l:-count-links重复计算硬件连接的文件. -h:-human-readable,以K,M,G为单位,提高信息可读性. ...
- linux如何查询一个文件夹大小,Linux下如何查看某个文件夹所占空间大小
Linux下的du命令可以查看某个目录或者文件所占空间大小. 基础知识: 命令参数: -a或-all 显示目录中个别文件的大小. -b或-bytes 显示目录或文件大小时,以byte为单位. -c或- ...
最新文章
- 新闻系统粗略说明文档
- 强化学习和最优控制的《十个关键点》81页PPT汇总
- 赤峰市职称计算机,关注丨赤峰今年评职称最新政策全在这……
- django配置数据驱动,python安装失败问题
- python wx提示框字体_使用wxStyledTextCtrl实现代码提示
- Linux下查看/管理当前登录用户及用户操作历史记录
- 1,windows java环境搭建,eclipse安装、tomcat配置,快速创建jsp页面
- cglib和jdk动态代理以及 按指定顺序排列list
- [日推荐] 『地铁查询』全国地铁尽在手中,不怕迷路!
- 无人机计算机模拟飞行,学习无人机,怎么安装无人机模拟器?
- 三菱Q协议PLC TCP/IP通讯协议解析简述
- 解决微信插件wxparse图片大小不能改变的问题
- 计算机教育主编在线审查,大学计算机基础教程-王慧儒主编.pdf
- 使用Docker容器来搭建LNMP(Nginx+Mysql+php)+Wordpress
- (批处理)批量文件夹重命名,要求是在原文件夹名前加上英文字母前缀aa
- android 下划线跟文字一样长,TextView 下划线 自动根据文字内容改变长度
- 前端阿里矢量图的使用步骤
- bistuacm 2019年第六场新生训练赛题解
- 王牌竞速服务器维护,王牌竞速攻略大全 新手入门少走弯路[多图]
- 《利用Python 进行数据分析》第八章:绘图和可视化