C# 扩展方法应用二:文件操作

在本人的工作中,经常要用到文件操作,举个例子,经常要从一个目录中获取所有的文件名,或者不同的扩展名的文件,然后将这些文件名建立一个文本文件,以便于读取等操作。还有就是经常性的要对文本进行读写操作,要把一个文本文件里的所有字符串读到一个数组或者集合中,然后把数组或者集合写进文件里。所以这样一些扩展方法将会非常方便的省去写代码的重复工作。


在这里主要演示的是读写,以及获取文件名等。


    #region 读一个文件中的内容到List中,返回这个list
    /// <summary>
    /// 读一个文件中的内容到List中,返回这个list
    /// </summary>
    /// <param name="openPath">完整路径</param>
    /// <returns></returns>
    public static List<string> ReadFromFile(this string openPath)
    {
        List<string> result = new List<string>();
        StreamReader sr = new StreamReader(openPath);
        while (!sr.EndOfStream)
            result.Add(sr.ReadLine());
        sr.Close();
        return result;
    }
    #endregion

    #region 把一个集合的内容写进文本文件中
    /// <summary>
    /// 把一个集合的内容写进文本文件中
    /// </summary>
    /// <param name="savePath">保存结果的文件路径</param>
    /// <param name="newResult">需要保存的集合名称</param>
    public static void WriteToFile(this string savePath, List<string> newResult)
    {
        File.WriteAllLines(savePath, newResult);
    }
    #endregion

    #region 读一个目录中所有的文件名列表,结果保存到一个集合中
    /// <summary>
    /// 读一个目录中所有的文件名列表,结果保存到一个集合中
    /// </summary>
    /// <param name="openPath">目标文件夹</param>
    /// <returns></returns>
    public static List<string> ReadFileNameFromDir(this string openPath)
    {
        DirectoryInfo dires = new DirectoryInfo(openPath);
        List<string> FileNameList = new List<string>();
        FileInfo[] files = dires.GetFiles();
        foreach (FileInfo f in files)
        {
            FileNameList.Add(f.Name);
        }
        return FileNameList;
    }
    #endregion

    #region 读一个目录中所有的文件名,并保存到文本文件中
    /// <summary>
    /// 读一个目录中所有的文件名,并保存到文本文件中
    /// </summary>
    /// <param name="directoryPath">获取文件名的目标文件夹</param>
    /// <param name="savePath">需要保存的文本文件</param>
    /// <param name="searchPattern">模式字符串,"*"代表0或N个字符,"?"代表1个字符。
    /// 范例:"Log*.xml"表示搜索所有以Log开头的Xml文件。</param>
    /// <param name="isSearchChild">是否搜索目标文件夹的子文件夹</param>
    public static void GetFilesNameAndSave(this string directoryPath, string savePath, string searchPattern, bool isSearchChild)
    {
        List<string> FileNameList = new List<string>();
        string[] fileNameArray;
        //如果目录不存在,则抛出异常
        if (!IsExistDirectory(directoryPath))
        {
            throw new FileNotFoundException();
        }

        try
        {
            if (isSearchChild)
            {
                fileNameArray = Directory.GetFiles(directoryPath, searchPattern, SearchOption.AllDirectories);
            }
            else
            {
                fileNameArray = Directory.GetFiles(directoryPath, searchPattern, SearchOption.TopDirectoryOnly);
            }
        }
        catch (IOException ex)
        {
            throw ex;
        }
        foreach (string s in fileNameArray)
            FileNameList.Add(s);
        WriteToFile(savePath, FileNameList);
    }
    #endregion

    #region 读一个目录中所有的文件的绝对路径
    /// <summary>
    /// 读一个目录中所有的文件的绝对路径
    /// </summary>
    /// <param name="openPath">目标文件夹</param>
    /// <returns></returns>
    public static List<string> ReadFullPathFromDir(this string openPath)
    {
        DirectoryInfo dires = new DirectoryInfo(openPath);
        List<string> FileNameList = new List<string>();
        FileInfo[] files = dires.GetFiles();
        foreach (FileInfo f in files)
        {
            FileNameList.Add(f.FullName);
        }
        return FileNameList;
    }
    #endregion

其实个人认为,C#File类和Directory类里的很多方法已经足够用了,只不过使用扩展方法,可以把一些类实例化的过程省略,在频繁的这样的过程中,无疑是能够节省很多时间的。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
C#中测试M4A文件,你可以使用NAudio库来读取和播放音频。以下是一个简单的示例: 1. 确保你已经在项目中安装了NAudio库。你可以使用NuGet包管理器来安装它。 2. 创建一个新的C#控制台应用程序项目。 3. 在代码文件的顶部添加以下引用: ```csharp using NAudio.Wave; ``` 4. 编写一个方法来测试M4A文件。例如,你可以创建一个名为`TestM4AFile`的方法,接受M4A文件路径作为参数: ```csharp public static void TestM4AFile(string filePath) { // 创建一个MediaFoundationReader对象来读取M4A文件 using (var reader = new MediaFoundationReader(filePath)) { // 输出音频文件的一些基本信息 Console.WriteLine($"Sample Rate: {reader.WaveFormat.SampleRate}"); Console.WriteLine($"Channels: {reader.WaveFormat.Channels}"); Console.WriteLine($"Duration: {reader.TotalTime}"); // 播放音频文件 using (var waveOut = new WaveOutEvent()) { waveOut.Init(reader); waveOut.Play(); // 等待播放完成 while (waveOut.PlaybackState == PlaybackState.Playing) { Thread.Sleep(100); } } } } ``` 5. 在`Main`方法中调用`TestM4AFile`方法,并传入M4A文件的路径作为参数。例如: ```csharp static void Main(string[] args) { string filePath = "path/to/your/audio/file.m4a"; TestM4AFile(filePath); } ``` 确保将`path/to/your/audio/file.m4a`替换为你的M4A文件的实际路径。 通过以上步骤,你可以在C#中测试M4A文件。这个例子演示了如何读取M4A文件的基本信息并播放它。你可以根据需要进行修改和扩展

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极地语音工作室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值