C#中如何通过部分文件名查找文件并读取内容到数组
在C#中根据部分文件名查找并读取文件内容
嗨,我来帮你搞定这个需求!其实思路很清晰:先定位到文件所在的目录,用通配符匹配你知道的那部分文件名,找到对应的文件后再把内容读取到数组里。下面是具体的实现步骤和代码示例:
1. 查找匹配的目标文件
首先你需要用Directory.GetFiles()方法来搜索目录里符合条件的文件。这个方法支持通配符*(匹配任意长度的任意字符),你可以根据你知道的部分文件名来构造搜索模式:
- 如果部分文件名是开头:用
"partialName*" - 如果部分文件名是结尾:用
"*partialName" - 如果部分文件名在中间:用
"*partialName*"
举个实际的代码例子:
// 你已知的部分文件名 string partialFileName = "0.115237052475505"; // 文件所在的目录路径(换成你实际的目录) string targetDirectory = @"C:\Your\File\Directory"; // 搜索目录下所有包含该部分文件名的文件(只搜当前目录,不包含子目录) string[] matchingFiles = Directory.GetFiles(targetDirectory, $"*{partialFileName}*", SearchOption.TopDirectoryOnly);
这里要注意:如果目录里可能有多个匹配的文件,记得先判断数组长度,避免空引用问题。比如可以先打印找到的文件数量,或者让用户选择要处理哪一个。
2. 读取文件内容到数组
找到目标文件后,用File.ReadAllLines()方法就能直接把文件的所有行读取到字符串数组里,非常方便。如果你的文件内容不是按行分隔的,也可以用File.ReadAllText()读取全部文本后再按你的规则拆分到数组中。
完整的示例代码:
using System; using System.IO; class Program { static void Main() { string partialFileName = "0.115237052475505"; string targetDirectory = @"C:\Your\File\Directory"; try { string[] matchingFiles = Directory.GetFiles(targetDirectory, $"*{partialFileName}*", SearchOption.TopDirectoryOnly); if (matchingFiles.Length == 0) { Console.WriteLine("没有找到匹配的文件哦!"); return; } // 这里默认取第一个匹配的文件,如果有多个,你可以扩展逻辑让用户选择 string filePath = matchingFiles[0]; Console.WriteLine($"找到目标文件:{Path.GetFileName(filePath)}"); // 读取文件内容到字符串数组 string[] fileContentArray = File.ReadAllLines(filePath); // 测试输出数组内容(你可以替换成自己的业务逻辑) Console.WriteLine("文件内容如下:"); foreach (string line in fileContentArray) { Console.WriteLine(line); } } catch (UnauthorizedAccessException) { Console.WriteLine("抱歉,没有访问该目录的权限!"); } catch (DirectoryNotFoundException) { Console.WriteLine("指定的目录不存在!"); } catch (Exception ex) { Console.WriteLine($"发生错误:{ex.Message}"); } } }
一些额外的小提示
- 权限问题:务必确保你的程序有访问目标目录的读写权限,否则会抛出权限异常,记得用
try-catch捕获处理。 - 搜索范围:如果需要搜索子目录,把
SearchOption.TopDirectoryOnly换成SearchOption.AllDirectories即可。 - 多个匹配文件:如果找到多个符合条件的文件,你可以遍历
matchingFiles数组,逐个处理,或者弹出选择框让用户指定要操作的文件。
内容的提问来源于stack exchange,提问作者SoSo
相关产品推荐
相关产品推荐

