C#封装的文件处理扩展类

在C#中,通过扩展方法(extension methods)可以为现有的类型添加新的功能,而不需要修改原类型的定义。扩展方法通常用于提供实用的辅助功能,比如文件处理。

下面是一个示例的C#扩展类,它可以封装一些常用的文件操作方法。这个类可以添加到System.IO.FileSystem.IO.Directory类型上,使得文件和目录的操作更加便捷。

Csharp

深色版本

1using System;
2using System.IO;
3using System.Collections.Generic;
4using System.Linq;
5using System.Text;
6
7public static class FileExtensions
8{
9    /// <summary>
10    /// 获取文件的扩展名(不包含点号)
11    /// </summary>
12    /// <param name="file">文件信息</param>
13    /// <returns>文件扩展名</returns>
14    public static string GetExtension(this FileInfo file)
15    {
16        return Path.GetExtension(file.FullName).TrimStart('.');
17    }
18
19    /// <summary>
20    /// 读取文件内容为字符串
21    /// </summary>
22    /// <param name="file">文件信息</param>
23    /// <returns>文件内容</returns>
24    public static string ReadAllText(this FileInfo file)
25    {
26        return file.OpenText().ReadToEnd();
27    }
28
29    /// <summary>
30    /// 将字符串内容写入文件
31    /// </summary>
32    /// <param name="file">文件信息</param>
33    /// <param name="content">要写入的内容</param>
34    public static void WriteAllText(this FileInfo file, string content)
35    {
36        using (StreamWriter writer = file.CreateText())
37        {
38            writer.Write(content);
39        }
40    }
41
42    /// <summary>
43    /// 追加内容到文件末尾
44    /// </summary>
45    /// <param name="file">文件信息</param>
46    /// <param name="content">要追加的内容</param>
47    public static void AppendAllText(this FileInfo file, string content)
48    {
49        using (StreamWriter writer = file.AppendText())
50        {
51            writer.Write(content);
52        }
53    }
54
55    /// <summary>
56    /// 删除文件
57    /// </summary>
58    /// <param name="file">文件信息</param>
59    public static void Delete(this FileInfo file)
60    {
61        file.Delete();
62    }
63
64    /// <summary>
65    /// 移动文件到新位置
66    /// </summary>
67    /// <param name="file">文件信息</param>
68    /// <param name="destFileName">目标文件名</param>
69    public static void MoveTo(this FileInfo file, string destFileName)
70    {
71        file.MoveTo(destFileName);
72    }
73
74    /// <summary>
75    /// 列出目录下的所有文件,包括子目录
76    /// </summary>
77    /// <param name="directory">目录信息</param>
78    /// <returns>文件列表</returns>
79    public static List<FileInfo> GetAllFiles(this DirectoryInfo directory)
80    {
81        return directory.GetFiles("*", SearchOption.AllDirectories).ToList();
82    }
83
84    /// <summary>
85    /// 递归删除目录及其所有内容
86    /// </summary>
87    /// <param name="directory">目录信息</param>
88    public static void DeleteRecursively(this DirectoryInfo directory)
89    {
90        foreach (DirectoryInfo subDir in directory.GetDirectories())
91        {
92            subDir.DeleteRecursively();
93        }
94        foreach (FileInfo file in directory.GetFiles())
95        {
96            file.Delete();
97        }
98        directory.Delete();
99    }
100}

使用这个扩展类之后,你可以直接在FileInfoDirectoryInfo的实例上调用上述方法,就像它们是类型本身的一部分一样。例如:

Csharp

深色版本

1FileInfo fileInfo = new FileInfo(@"C:\example.txt");
2string extension = fileInfo.GetExtension(); // 使用扩展方法

请注意,为了使这些扩展方法可用,你需要在你的代码文件中包含using FileExtensions;语句,或者完全限定方法调用,如FileExtensions.GetExtension(fileInfo);。然而,更好的做法是在同一命名空间下定义扩展方法和使用它们的类,或者在使用它们的代码文件顶部添加正确的using指令。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值