获取指定目录下的子目录

根据不同的需求选择不同的方法 获取指定目录下的子目录操作类有两个选择: Directory : 静态类,对文件夹的操作单一时选择; DirectoryInfo :动态类,对文件夹有多种不同操作时选择; 方法也有两种选择: GetDirectories() :需要等所有子目录都准备好才能进行操作,返回结果为数组类型,一般子目录数量不大时使用; EnumerateDirectories() :.net 4.0 后增加,更高效,无需等待子目录准备好就可以进行操作,返回结果为 IEnumerate<T> 类型,子目录数量巨大时优先使用; 注意:Directory 调用方法时,关键类型是 string;DirectoryInfo 则是 DirectoryInfo 类型; 上述两个方法都有 3 个重载,分别是: 返回当前目录下所有子目录 (默认,不处理子目录); 按通配符返回自定目录 (只支持 * 和 ?); 按通配符返回所有子目录 (所有层级) 获取指定目录下的子目录 测试目录结构: 处理代码: 结果: 默认只会返回 test 当前目录下的子目录: 返回当前目录下的包含 ”test“ 的目录: 返回所有层级包含 ”test“ 的目录: 返回所有子目录: 关于获取文件部分,请参考:C# 获取指定目录下的文件

C# 获取指定目录下的文件

使用到的类 DirectoryInfo 和 Directory,后者提供静态方法,可以直接使用; 对同一文件有多种操作时,可以使用 DirectoryInfo; 对文件的操作单一时,就是用 Directory 默认方式获取目录下的所有文件 C# 获取指定目录下的文件 使用 GetFiles() 方法,默认只返回当前目录下的文件,不处理子文件夹,该方法有三种重载: GetFiles() 不带参数,按默认返回 GetFiles(string pattern) 使用通配符返回指定文件,该模式只支持 * 和 ?作为通配符,不支持正则表达式(* 表示匹配多个字符,? 表示匹配一个字符) GetFiles(string pattern, SearchOptions option) 也支持通配符,SearchOptions 选择 AllDirectories 时,会返回子目录下的文件 注意: DirectoryInfo 返回的结果是 FileInfo 类型的数组; Directory 返回的结果则是 string 类型的数组 SearchOptions 类型 源代码如下: 枚举类型,控制只处理当前目录,还是会一并处理子目录 测试目录: D:\test\ 目录下 Directory 例子 默认返回当前目录所有文件 输出 files 结果为: 根据通配符返回结果: […]

Visual Studio 查看当前程序所有线程

查看当前所有线程 在程序中打断点,然后启动调试(注意:线程窗口需要启动调试才可以看得到)点击 Debug > Windows > Threads 线程窗口如下:

LINQ 查询

基本信息 LINQ (Language Integrated Query) : 语言集成查询,它运行代码以查询数据库相同的方式操作内存中的数据;注意:LINQ 读作 lin k,而不是 lin q 基本语法格式 例子: 注意:一般是以 from 开头,以 select 结束,使用 LINQ 可以减少使用 for 循环,更方便的获取集合数据中的特定数据。 排序 orderby 倒序排序:关键字是 orderby (不分开) 分组 group by 分组则有所不同,格式为:group 变量 by 条件 注意:into 后面的临时变量 g 内包含多种属性和方法,其中用的较多的有:g.Key 分组时 by 所用的条件,如上例中为 name;g.Max() 用于求分组后组中的最大值,用法 g.Max(x=>x.age);g.Min() 用于求分组后组中的最小值; 按名字排序,找出年龄最大 也可以根据需要定义返回格式:new {g.Key, n1=v1, n2=v2…} 根据多个条件来分组:new {condition1, condition2}根据年龄和名字分组, 再找出 […]

Windows 下获取硬盘序列号

只获取序列号 以下任意一条命令都可以: wmic diskdrive get serialnumber wmic path win32_physicalmedia get SerialNumber wmic path Win32_DiskDrive get SerialNumber 注意:windows 7 下获取的序列号格式可能和 Windows 10 下的不一样 获取硬盘的更多信息 wmic diskdrive get Name, Manufacturer, Model, InterfaceType, MediaType, SerialNumber 相关的字段(属性)可以查看微软官方文档 C# 中获取硬盘信息的代码 需要引用 System.Management 库 参考 Find Hard Disk Serial Number in Windows 10

判断程序是否以管理员的身份打开

代码如下: public static Boolean IsAdministrator() { System.Security.Principal.WindowsIdentity identity = System.Security.Principal.WindowsIdentity.GetCurrent(); System.Security.Principal.WindowsPrincipal principal = new System.Security.Principal.WindowsPrincipal(identity); return principal.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator); }

WPF 的 KeyDown 事件不生效

出发键盘按钮事件 控件当前获得焦点,通过 xaml 的 FocusManager 或者后台使用 Focus() 方法来设置 将控件的 Focusable 设为 True,如下: 代码示例如下: 界面: <Grid FocusManager.FocusedElement=”{Binding ElementName=tb}”> <TextBlock Focusable=”True” KeyDown=”TextBlock_KeyDown” x:Name=”tb” Text=”abc” FontSize=”100″/> </Grid> 后台: private void TextBlock_KeyDown(object sender, KeyEventArgs e) { if (e.Key == Key.Enter) { tb.Text = “ok”; } }

C# 获取 sha256 码

用 C# 获取 sha256, 输入源可以是 字符串类型,也可以是 字节流类型: 实现方式如下: 自定义的输入类型的枚举: public enum Sha26ParseType { StringType,//字符串类型 StreamType//字节流类型 } 实现代码: public static string general_sha256_code(string str, Sha26ParseType type) { string result = string.Empty; byte[] by = null; //求字节流的SHA256 if (type.Equals(Sha26ParseType.StreamType)) { if (!System.IO.File.Exists(str)) return result; System.IO.FileStream stream = new System.IO.FileStream(str, System.IO.FileMode.Open, System.IO.FileAccess.Read); System.Security.Cryptography.SHA256Managed Sha256 = new System.Security.Cryptography.SHA256Managed(); by = […]

WPF Grid 根据内容自适应

WPF Grid 根据内容自适应, 为了能让 Grid 的行和列根据内容自动适应可以通过设置来实现: Grid 表格布局,默认是平均分配,为了便于观察,通过设置 ShowGridLine 显示分界线如下: 行 Row 可以设置行高 Height;列 Column 可以设置列宽 Width; Grid 中 RowDefinition 的 Height 和 ColumnDefinition 的 Width 可以通过以下几种方式来设置: 使用具体数值,固定不变;设置第一行行高为 40,效果如下,第一行的高度就固定为 40 不变了。除非界面的内容固定不变,一般不建议直接使用具体数值。  2. 按比例划分,使用 * 星号, 分配的规则是,把所有的数字相加作为分母,每一个单独的数字作为分子,算出比例,如: 2*,5*,8*; 分母为(2+5+8=15),分子则是(2/15、5/15、8/15): 此时只是比例固定不变,如果界面尺寸变化,对应的内容部分就会变大。   3. 设置为 Auto,根据内容自适应; 只有行设置为 Auto,设置为 Auto 的行高为当前行内容最高的高度,剩下没有设置 Auto 的平均分配剩余的高度,如下: 默认的平均分配 第一行设置 Height = “Auto” 后,如下: […]

WPF使用Path来画圆

WPF使用Path来画圆, 在 WPF 中可以使用 Path (路径) 来画圆,而 Path 支持两种写法:xaml 代码格式、标记格式,这里介绍的是标记格式: 例子: 效果: 结合代码解释:1. Stroke 表示圆边框的颜色,这里是黑色 black 2. StrokeThickness 表示边框粗细 3. Fill 表示圆内部的颜色,这里为蓝色 blue 4. Path 的 Data 属性,就是描述当前路径是如何描画的 Data=”M 300,300 A 100,100 0 1 1 300,299 Z”            M 300,300  : 300,300 表示起始坐标,字母 M 为 Move, 意思是将画笔移到 300,300 处;     […]