using System; using System.Collections.Generic; using System.IO; using System.Text; using System.Text.RegularExpressions; namespace Edu.Common.Plugin { /// <summary> /// 文件帮助类 /// </summary> public class FileHelper { /// <summary> /// 获取指定文件夹下面的所有文件 /// </summary> /// <param name="path"></param> /// <param name="serverPath"></param> /// <returns></returns> public static List<FileItem> GetFileAllPath(string path, string savePath) { List<FileItem> fileList = new List<FileItem>(); int leval = 0; GetDirectoryAndFile(path, leval, fileList); foreach (var item in fileList) { string str = @"录音"; Regex reg = new Regex(str); string newFileName = Regex.Replace(item.FileName, @"\d", ""); var fileNameArray = Regex.Split(newFileName, str); if (fileNameArray != null && fileNameArray.Length > 0) { newFileName = (fileNameArray.Length > 1 ? fileNameArray[1] : fileNameArray[0]).TrimStart().TrimEnd(); } string newPathFileName = savePath + @"\" + newFileName.TrimStart('.')+"3"; File.Copy(item.FileUrl, newPathFileName, true); item.FileUrl = newPathFileName; } return fileList; } /// <summary> /// 获取所有文件 /// </summary> /// <param name="path"></param> /// <returns></returns> public static List<FileItem> GetFileList(string path) { List<FileItem> fileList = new List<FileItem>(); DirectoryInfo theFolder = new DirectoryInfo(@path); //遍历文件 foreach (FileInfo NextFile in theFolder.GetFiles()) { string extName = Path.GetExtension(NextFile.Name).ToLower(); if (extName == ".mp3") { fileList.Add(new FileItem() { FileName = NextFile.Name, FileUrl = NextFile.FullName }); } } return fileList; } /// <summary> /// 列出path路径对应的文件夹中的子文件夹和文件 /// 然后再递归列出子文件夹内的文件和文件夹 /// </summary> /// <param name="path">需要列出内容的文件夹的路径</param> /// <param name="leval">当前递归层级,用于控制输出前导空格的数量</param> private static void GetDirectoryAndFile(string path, int leval, List<FileItem> list) { DirectoryInfo theFolder = new DirectoryInfo(@path); leval++; //遍历文件 foreach (FileInfo NextFile in theFolder.GetFiles()) { for (int i = 0; i < leval; i++) { string extName = Path.GetExtension(NextFile.Name).ToLower(); if (extName == ".mp3") { list.Add(new FileItem() { FileName = NextFile.Name, FileUrl = NextFile.FullName }); } } } //遍历文件夹 foreach (DirectoryInfo NextFolder in theFolder.GetDirectories()) { for (int i = 0; i < leval; i++) { GetDirectoryAndFile(NextFolder.FullName, leval, list); } } } } /// <summary> /// 文件项目 /// </summary> public class FileItem { /// <summary> /// 文件名 /// </summary> public string FileName { get; set; } /// <summary> /// 文件全路径 /// </summary> public string FileUrl { get; set; } } }