Подтвердить что ты не робот

Как я могу получить fileinfo всех файлов в папке с GetFile()?

Я не знаю, в чем моя ошибка.

FileInfo[] FileInformation = DirectoryInfo.GetFiles(textBoxPath.Text);  
for (int i = 0; i <= FileInformation.Length; i++)
{
    File.Move(FileInformation[i].DirectoryName, FileInformation[i].Directory + "File" + i);
}

VisualSudio говорит, что вот ошибка:

System.IO.DirectoryInfo.GetFiles(textBoxPath.Text);

4b9b3361

Ответ 1

DirectoryInfo не является статическим классом (вы смешали его с Directory, который предоставляет статические методы), поэтому вы должны создать его экземпляр:

var dir = new DirectoryInfo(textBoxPath.Text);
FileInfo[] files = dir.GetFiles();

Также я предлагаю вам использовать Path.Combine для создания нового пути к файлу и FileInfo.MoveTo, который не требует имени исходного каталога:

for(int i = 0; i < files.Length; i++)
{
    FileInfo file = files[i];
    string destination = Path.Combine(file.DirectoryName, "File", i.ToString());
    file.MoveTo(destination);
} 

Еще одна мысль - если вам не нужна дополнительная информация о файлах, помимо имен, то вы можете получить имена файлов только, без создания объектов FileInfo. Используйте статические методы классов Directory и File. Это будет более эффективно:

string sourceDir = @"D:\Downloads";

string[] files = Directory.GetFiles(sourceDir);
for (int i = 0; i < files.Length; i++)
{
    string fileName = files[i];
    var destination = Path.Combine(sourceDir, "File", i.ToString());
    File.Move(fileName, destination);             
} 

Ответ 2

Используйте следующее:

    System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(textBoxPath.Text);
    System.IO.FileInfo[] fileInformations = dir.GetFiles();  
    for (int i = 0; i <= fileInformations.Length; i++)
    {
        System.IO.File.Move(fileInformations[i].DirectoryName, System.IO.Path.Combine(FileInformation[i].Directory, "File" + i));
    }

EDIT: переименовал ваш FileInformation в соответствие с именами локальных переменных fileInformations. Используется Path.Combine, чтобы комбинировать пути и имя файла вместо комбинации строк, так как это позаботится об отсутствующих/и других проблемах пути.