如何将目录中的.txt与.mp3文件分类存入二维数组?
问题分析与修正方案
你的代码存在几处关键问题:
Directory.GetFiles不支持直接传入多搜索模式数组,需分别获取不同类型文件;- 二维数组的遍历逻辑错误,二维数组的元素是
string类型而非string[,]; twoFiles类未定义存储文件的属性,无法承载数据。
以下提供两种实现方案,分别对应二维数组存储和更易维护的自定义类存储:
方案一:使用二维数组存储
public void ListFiles() { string pathDir = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "folderPath"); // 分别获取目录下的.txt和.mp3文件 string[] txtFiles = Directory.GetFiles(pathDir, "*.txt"); string[] mp3Files = Directory.GetFiles(pathDir, "*.mp3"); // 创建二维数组:第一行存txt文件,第二行存mp3文件 int maxCount = Math.Max(txtFiles.Length, mp3Files.Length); string[,] filePaths = new string[2, maxCount]; // 填充txt文件到第一行 for (int i = 0; i < txtFiles.Length; i++) { filePaths[0, i] = txtFiles[i]; } // 填充mp3文件到第二行 for (int i = 0; i < mp3Files.Length; i++) { filePaths[1, i] = mp3Files[i]; } // 验证示例:遍历二维数组 for (int row = 0; row < 2; row++) { for (int col = 0; col < maxCount; col++) { Console.WriteLine(filePaths[row, col]); } } }
方案二:使用自定义类存储(推荐)
先完善TwoFiles类,添加对应属性:
public class TwoFiles { public List<string> TxtFiles { get; set; } = new List<string>(); public List<string> Mp3Files { get; set; } = new List<string>(); }
再修改文件读取逻辑:
List<TwoFiles> filesList = new List<TwoFiles>(); public void ListFiles() { string pathDir = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "folderPath"); TwoFiles fileGroup = new TwoFiles(); // 将txt文件批量添加到对应列表 fileGroup.TxtFiles.AddRange(Directory.GetFiles(pathDir, "*.txt")); // 将mp3文件批量添加到对应列表 fileGroup.Mp3Files.AddRange(Directory.GetFiles(pathDir, "*.mp3")); filesList.Add(fileGroup); }
方案说明
- 二维数组方案适合严格按行列结构存储的场景,若两类文件数量不一致,空余位置会填充
null; - 自定义类方案结构更清晰,便于后续对两类文件进行单独操作,是更易维护的选择。
内容的提问来源于stack exchange,提问作者Addlon
相关产品推荐
相关产品推荐

