使用Parallel计算目录中的文件字节长度
/// <summary>
/// 根据通配符和搜索条件计算给定目录中的文件字节长度
/// </summary>
/// <param name="path"> 要搜索的目录的相对或绝对路径。 此字符串不区分大小写。</param>
/// <param name="searchPatter">要与 path 中的文件名匹配的搜索字符串。 此参数可以包含有效的文本路径和通配符(* 和 ?) 字符(参见“备注”)的组合,但不支持正则表达式。</param>
/// <param name="searchOption">指定搜索操作是应仅包含当前目录还是应包含所有子目录的枚举值之一。 默认值为 System.IO.SearchOption.TopDirectoryOnly。</param>
/// <returns></returns>
private static Int64 DirectoryBytes(string path, string searchPatter, SearchOption searchOption)
{
Int64 masterTotal = ; //返回一个可枚举集合,它包含 path 指定的目录中与指定的搜索模式和选项匹配的文件的完整名称(包括路径)。
var files = Directory.EnumerateFiles(path, searchPatter, searchOption); //提供有关执行的完成状态 System.Threading.Tasks.Parallel 循环。
ParallelLoopResult parallelLoopResult = Parallel.ForEach<string, Int64>(
//source 可枚举的数据源
files, //localInit 用于返回每个任务的本地数据的初始状态的函数委托。
//每个任务开始前调用一次
() =>
{
//开始前总计数初始化为0,即将taskLocalTotal初始化为0
return ;
}, //body 将为每个迭代调用一次的委托。
(file, loopState, index, taskLocalTotal) =>
{
//获得这个文件的大小,把它添加到这个任务的累加值上
Int64 fileLength = ;
FileStream fileStream = null;
try
{
fileStream = File.OpenRead(file);
fileLength = fileStream.Length;
}
catch (IOException)
{
//忽略拒绝访问的任何文件
}
finally
{
fileStream?.Dispose();
}
return taskLocalTotal + fileLength;
}, //localFinally 用于对每个任务的本地状态执行一个最终操作的委托。
taskLocalTotal =>
{
//将这个任务的总计值(taskLocalTotal)加到总的总计值(masterTotal)上
Interlocked.Add(ref masterTotal, taskLocalTotal);
}
); return masterTotal;
}
使用Parallel计算目录中的文件字节长度的更多相关文章
- find - 递归地在层次目录中处理文件
总览 SYNOPSIS find [path...] [expression] 描述 DESCRIPTION 这个文档是GNU版本 find 命令的使用手册. find 搜索目录树上的每一个文件名,它 ...
- Linux find命令:在目录中查找文件(超详解)
find 是 Linux 中强大的搜索命令,不仅可以按照文件名搜索文件,还可以按照权限.大小.时间.inode 号等来搜索文件.但是 find 命令是直接在硬盘中进行搜索的,如果指定的搜索范围过大,f ...
- python glob 用通配符查找指定目录中的文件 - 开源中国社区
python glob 用通配符查找指定目录中的文件 - 开源中国社区 python glob 用通配符查找指定目录中的文件
- Linux查看目录中的文件
Linux查看目录中的文件 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ ls examples.desktop jdk 公共的 视频 文档 音乐 java ...
- File类之在指定目录中查找文件
package IoDemo; import java.io.File; /** * @Title:FileDemo2 * @Description:在指定的目录中查找文件 * @author Cra ...
- Python 对目录中的文件进行批量转码(GBK>UTF8)
通过python实现对文件转码,其实处理很简单: 1.打开读取文件内容到一个字符串变量中,把gbk编码文件,对字符串进行decode转换成unicode 2.然后使用encode转换成utf-8格式. ...
- Git 忽略某个目录中的文件,同时保留这个目录
类似的一个问题是项目根目录下可能有 logs 一类的目录, 我们希望他人把仓库 clone 下来的时候能够已经携带了这个目录, 但又不希望让这个目录中的日志文件进版本库. 之前看到一些项目用了一种比较 ...
- Java非递归的方式获取目录中所有文件(包括目录)
零.思路解析 对于给出的文件查看其下面的所有目录,将这个目录下的所有目录放入待遍历的目录集合中,每次取出该集合中的目录遍历,如果是目录再次放入该目录中进行遍历. 一.代码 /** * 非递归的方式获取 ...
- android 打开 res raw目录 中 数据库文件
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha 安卓不能直接打开 res raw 中的 数据库 文件. 通过 资源 获取资源 方法 , ...
随机推荐
- AP注册
1.ac发现ap 两种模式:二层发现.三层发现 按ap与ac所处ip网段不同,可以把注册过程分为二层模式和三层模式: 两种模式均通过发送discovery报文进行,二层模式discovery报文仅在同 ...
- 论UT阶段重要性
测试与开发这对立的命运啊 如果是对测试从业者心存鄙视的朋友啊,请关掉此页,带着偏见不好看的~ 人生就像一个旅途,每个人看到风景不一样,世界观.人生观.价值观也就不同.不要试着去改变别人,因为你的观点在 ...
- sql绕过转义符注入
宽字节绕过总结 1. 重点:转义符反斜杠\,ASCII码0x5C 2. 在双字节字符集中, 在\前面增加高字节,0x5C被当做低字节,组合为“汉字”,导致\符号被“吃掉”,后续字符逃出限制,从而绕 ...
- code review规则
简单可行的code review规则 前言 曾经有一段垃圾代码放在我的面前,我没有拒绝,等我真正开始接手的时候我才后悔莫及,程序员最痛苦的事莫过于此! 每当接手别人的代码,都有一种想重新写一遍的感觉, ...
- React + Antd开发模式下的Excel导入功能
具体js如下,配合的是antd里面的upload组件,使用的是xlsx插件 npm : npm install xlsx 插件链接: https://github.com/SheetJS/sheet ...
- [目标检测] 从 R-CNN 到 Faster R-CNN
R-CNN 创新点 经典的目标检测算法使用滑动窗法依次判断所有可能的区域,提取人工设定的特征(HOG,SIFT).本文则预先提取一系列较可能是物体的候选区域,之后仅在这些候选区域上用深度网络提取特征, ...
- 12.Flume的安装
先把flume包上传并解压 给flume创建一个软链接 给flume配置环境变量 #flume export FLUME_HOME=/opt/modules/flume export PATH=$PA ...
- [转帖]12条用于Linux的MySQL/MariaDB安全最佳实践
12条用于Linux的MySQL/MariaDB安全最佳实践 2018-01-04 11:05:56作者:凉凉_,soaring稿源:开源中国社区 https://ywnz.com/linuxysjk ...
- Oracle通过正则表达式分割字符串 REGEXP_SUBSTR
REGEXP_SUBSTR函数格式如下: function REGEXP_SUBSTR(string, pattern, position, occurrence, modifier) string ...
- centos 7 cloudera-manager5.16.2,CDH5.16.2安装升级spark2.4.0
1.在已经安装好系统的linux服务器上关闭selinux和iptables 2.在所有linux服务器上配置ntp服务并设置ntp时间同步 3.在所有linux服务器上安装好cm和cdh版本所需要对 ...