Path类型的扩展方法 z

写了一个基于System.IO.Path类型方法的扩展类型,用于快速对文件系统路径进行操作。如下图:

其中有许多方法就是直接调用Path类型的静态方法。比如AppendPath方法内部会直接调用Path.Combine。这些方法就不需要再介绍了。下面看一些许多说明的方法:

ToDirectory方法会把一个文件路径放到文件夹路径内并返回结果,比如:

var path =@"C:\a\b\c.jpg"; Console.WriteLine(path.ToDirectory(@"D:\文件夹"));

输出:

D:\文件夹\c.jpg

ToDirectory方法还可以把一些列的文件放到一个文件夹路径内,这里还需要一个源文件夹路径。比如我们想把“C:\文件夹”内的一些文件复制到“D:\新文件夹”内,源文件夹路径就是“C:\文件夹”。通过这个方法来完成文件路径转换,如下代码:

var paths =newstring[] { @"c:\文件夹\a.jpg", @"c:\文件夹\b.cs", @"c:\文件夹\子文件夹\test.txt", @"c:\文件夹\子文件夹\子子文件夹\haha" }; var destPaths = paths.ToDirectory(@"D:\新文件夹", @"C:\文件夹"); foreach (var file in destPaths) Console.WriteLine(file);

输出:

D:\新文件夹\a.jpg D:\新文件夹\b.cs D:\新文件夹\子文件夹\test.txt D:\新文件夹\子文件夹\子子文件夹\haha

ChangeFileName和ChangeFileNameOnly方法可以改变文件的名称,他们的区别是后者不会更改扩展名,示例:

var path =@"C:\test.jpg"; Console.WriteLine(path.ChangeFileName("mgen")); Console.WriteLine(path.ChangeFileNameOnly("mgen"));

输出:

C:\mgen C:\mgen.jpg

GetDirectoryPath方法的用途和Path.GetDirectoryName方法是一致的,和Path.GetDirectoryName方法不同的是,它总是会返回上一层的目录。让我们来看Path.GetDirectoryName方法的一个问题:

var path1 =@"C:\test\mgen"; var path2 =@"C:\test\mgen\"; Console.WriteLine(Path.GetDirectoryName(path1)); Console.WriteLine(Path.GetDirectoryName(path2));

输出:

C:\test C:\test\mgen

由于第二个路径最后面有”\”,而Path.GetDirectoryName方法调用后仅会把这个”\”去掉。

而GetDirectoryPath方法的执行会先去掉后面的”\”(如果有的话),所以GetDirectoryPath方法总是会返回上一层的目录。如下GetDirectoryPath方法执行:

publicstaticstring GetDirectoryPath(thisstring path) {     path = path.TrimEnd(Path.DirectorySeparatorChar); returnPath.GetDirectoryName(path); }

Path类型的扩展方法 z,布布扣,bubuko.com

时间: 2024-12-25 09:21:53

Path类型的扩展方法 z的相关文章

LinQ 定义带有返回类型的扩展方法3.2

using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Reflection; using System.Diagnostics; namespace ExtensionWithReturn { class Program { static void Main(string[] args) { var s

C#原始类型扩展方法—this参数修饰符

扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型.扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用.对于用 C# 和 Visual Basic 编写的客户端代码,调用扩展方法与调用在类型中实际定义的方法之间没有明显的差异. 扩展方法被定义为静态方法,但它们是通过实例方法语法进行调用的.它们的第一个参数指定该方法作用于哪个类型,并且该参数以 this 修饰符为前缀.仅当您使用 using 指令将命名空间显式导入到源代码中之后,扩

编写高质量代码改善C#程序的157个建议——建议101:使用扩展方法,向现有类型“添加”方法

建议101:使用扩展方法,向现有类型“添加”方法 考虑如何让一个sealed类型具备新的行为.以往我们会创建一个包装器类,然后为其添加方法,而这看上去一点儿也不优雅.我们也许会考虑修改设计,直接修改sealed类型,然后为其发布一个新的版本,但这依赖于你拥有全部的源码.更多的时候,我们会采取针对第三方公司提供的API进行编程的方式.对于我们来说,FCL是一组第三方公司(微软)提供给我们的最好的API. 包装类的编码形式如下: class Program { static void Main(st

【开源】OSharp框架解说系列(3):扩展方法

〇.前言 扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型. 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用. 对于用 C# 和 Visual Basic 编写的客户端代码,调用扩展方法与调用在类型中实际定义的方法之间没有明显的差异. 最常见的扩展方法是 LINQ 标准查询运算符,它将查询功能添加到现有的 System.Collections.IEnumerable 和 System.Collections.Generic.

C#中的扩展方法及用途

GPS平台.网站建设.软件开发.系统运维,找森大网络科技!http://cnsendnet.taobao.com来自森大科技官方博客http://www.cnsendblog.com/index.php/?p=476 扩展方法使你能够向现有类型"添加"方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型. 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用. 以上是msdn官网对扩展方法的描述,现在我通过一个情景例子来对此进行阐释.假设一个控制台程序cla

项目中遇到的扩展方法-总结和分享

概述: 本篇是对工作中遇到的扩展方法的总结,好记性不如乱笔头,先记下来,以后遇到类似问题,如果忘了,可以看下博客. 一.问题描述: 在项目中遇到一个问题,就是要将左边的代码替换为右边的代码,右边代码是对左边代码的封装,所以右边的代码更简便些. dataReader.IsDBNull(2) ? (string)null : dataReader.GetString(2).Trim(); dataReader.MyGetDataString(2); dataReader的类型是System.Data

扩展方法

扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型. 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用.(引自csdn) 或许用一个例子说明更加明白 扩展方法: public static class Helper { public static bool IsNullOrEmpty(this string str) { return string.IsNullOrEmpty(str); } } 使用: static void

ASP.NET MVC学前篇之扩展方法、链式编程

前言 目的没有别的,就是介绍几点在ASP.NETMVC 用到C#语言特性,还有一些其他琐碎的知识点,强行的划分一个范围的话,只能说都跟MVC有关,有的是外围的知识,有的是包含在框架内的. MVC学前篇字样?有噱头的成分也有真实的成分,所以工欲善其事,必先利其器.器是什么?基础嘛,虽然说MVC框架中涉及到的知识很多很多也不是我一篇两篇能说完的,我能做的就是知道多少就跟大家分享多少,当然了随着时间的推移会完善这个系列. 1扩展方法 扩展方法是C# 3.0特性里的知识,它用在最多的地方是在Linq中,

扩展方法(为那些已经写好不能修改源码的类添加方法)

参考:https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/classes-and-structs/how-to-implement-and-call-a-custom-extension-method 本主题介绍如何实现 .NET Framework 类库 中任意类型的扩展方法,或是你想要扩展的任何其他 .NET 类型. 客户端代码可以通过以下方法使用扩展方法,添加包含这些扩展方法的 DLL 的引用,以及添加 usin