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

9

我创建了一个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());
            }

这个数组包含文件夹=DirPath中所有文件的名称。

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


如果您需要带有完整路径的文件,请使用Directory.GetFiles()函数。 - Renatas M.
var files = System.IO.Directory.GetFiles("C:\test\", "."); 在此代码中,获取位于 "C:\test\" 目录下的所有文件,且文件名包含任意扩展名。 - stian.net
4个回答

16

使用 LINQ:

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

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

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

你好,我不想包含子目录中的文件?我该如何删除子目录中的文件? - klijo
1
@klijo - 你为什么使用了 SearchOption.AllDirectories?那是它的作用。要么使用不使用 SearchOption 枚举的重载,要么将其更改为 SearchOption.TopDirectoryOnly - Oded

3

如果你想反过来进行转换(将字符串数组转换为FileInfo),可以使用以下方法:

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

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接