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

时间:2011-12-27 12:43:06

标签: c# file-io

我像这样创建一个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数组中。这样可以,还是有更清洁的方法?

4 个答案:

答案 0 :(得分:13)

使用LINQ:

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

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

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

答案 1 :(得分:2)

如果你想转向其他方式(将字符串数组转换为FileInfo),你可以使用以下内容:

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

答案 2 :(得分:1)

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;
    }

答案 3 :(得分:0)

试试这个

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

如果您不想使用日期过滤器,只需使用以下代码进行转换

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

如果您需要文件的完整路径,则可以使用FullName代替Name