将FileInfo数组转换为String数组C#

我像这样创建一个FileInfo数组

try { DirectoryInfo Dir = new DirectoryInfo(DirPath); FileInfo[] FileList = Dir.GetFiles("*.*", SearchOption.AllDirectories); foreach (FileInfo FI in FileList) { Console.WriteLine(FI.FullName); } } catch (Exception e) { Console.WriteLine(e.ToString()); } 

此数组包含folder = DirPath中的所有文件名

我想到循环遍历FileInfo数组并将其复制到String数组。 这样可以,还是有更清洁的方法?

使用LINQ:

 FileList.Select(f => f.FullName).ToArray(); 

或者,使用Directory可以直接获取文件名。

 string[] fileList = Directory.GetFiles(DirPath, "*.*", SearchOption.AllDirectories); 

如果你想转向另一种方式(将字符串数组转换为FileInfo),你可以使用以下方法:

 string[] files; var fileInfos = files.Select(f => new FileInfo(f)); List infos = fileInfos.ToList(); 

linq是一个很好的解决方案,但对于那些不想使用linq的人,我做了这个function:

  static string BlastWriteFile(FileInfo file) { string blasfile = " "; using (StreamReader sr = file.OpenText()) { string s = " "; while ((s = sr.ReadLine()) != null) { blasfile = blasfile + s + "\n"; Console.WriteLine(); } } return blasfile; } 

试试这个

 DirectoryInfo directory = new DirectoryInfo("your path"); List Files = (directory.GetFiles().Where(file => file.LastWriteTime >= date_value)).Select(f => f.Name).ToList(); 

如果您不想使用日期filter,只需使用以下代码进行转换即可

 List logFiles = directory.GetFiles().Select(f => f.Name).ToList(); 

如果需要文件的完整路径,可以使用FullName而不是Name