преобразовать массив FileInfo в массив строк C # - PullRequest
7 голосов
/ 27 декабря 2011

Я создаю массив 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. Это нормально или есть более чистый метод?

Ответы [ 4 ]

13 голосов
/ 27 декабря 2011

Используя LINQ:

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

В качестве альтернативы, используя Directory, вы можете напрямую получить имена файлов.

string[] fileList = Directory.GetFiles(DirPath, "*.*", 
                                       SearchOption.AllDirectories);
2 голосов
/ 28 февраля 2013

Если вы хотите пойти другим путем (преобразовать массив строк в FileInfo), вы можете использовать следующее:

1 голос
/ 01 июня 2013

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 голосов
/ 17 июня 2016

Попробуйте это

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...