将FileInfo数组转换为字符串数组C#

将FileInfo数组转换为字符串数组C#,c#,file-io,C#,File Io,我创建了一个FileInfo数组,如下所示 try { DirectoryInfo Dir = new DirectoryInfo(DirPath); FileInfo[] FileList = Dir.GetFiles("*.*", SearchOption.AllDirectories); foreach (FileInfo FI in FileList)

我创建了一个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数组中循环并将其复制到字符串数组中。这可以吗?还是有更干净的方法?

使用LINQ:

FileList.Select(f => f.FullName).ToArray();
或者,使用
目录
可以直接获取文件名

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

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

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

linq是一个很好的解决方案,但是对于不想使用linq的人,我做了以下功能:

    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<string> Files = (directory.GetFiles().Where(file => file.LastWriteTime >= date_value)).Select(f => f.Name).ToList();
DirectoryInfo directory=newdirectoryinfo(“您的路径”);
列表文件=(directory.GetFiles().Where(file=>file.LastWriteTime>=date\u值))。选择(f=>f.Name).ToList();
如果您不需要带有日期的筛选器,只需使用以下代码进行转换即可

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

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

如果需要文件的完整路径var files=System.IO.Directory.GetFiles(“C:\\test\\”,”);嗨,我不想在子目录中包含文件?如何删除子目录文件?@klijo-为什么使用
SearchOption.AllDirectories
?这就是它的作用。使用不使用
SearchOption
枚举的重载,或者将其更改为
SearchOption.TopDirectoryOnly