Если префикс имени файла, то пропустить, если не добавить префикс - PullRequest
0 голосов
/ 17 января 2020

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

  1. Go по всем файлам в папке
  2. Проверить имя каждого файла
  3. Если имя файла начинается с prefix ("Some prefix ....")
  4. Пропустить
  5. Если имя файла не начинается с prefix ("Some prefix ....")
  6. Добавить prefix ("Some prefix ....") перед существующим именем файла

Мой текущий код может добавить префикс перед именем файла, но не может определить, существует ли уже префикс. Как добавить такую ​​функциональность?

Текущий код:

string prefix = "Some prefix ";

var files = Directory.GetFiles(@"C:\temp", "*.pdf");

foreach (var file in files)
{
    string newFileName = Path.Combine(
        Path.GetDirectoryName(file), 
       (prefix + Path.GetFileName(file)));

    File.Move(file, newFileName);
}

1 Ответ

3 голосов
/ 17 января 2020

Вы можете запрос с помощью Linq (Where)

using System.Linq;

...

string prefix = "SomePrefix";

...

var filesToMove = Directory
  .EnumerateFiles(@"C:\temp", "*.pdf")
  .Where(item => !Path
     .GetFileNameWithoutExtension(item)
     .StartsWith(prefix, StringComparison.OrdinalIgnoreCase))
  .ToArray();

foreach(string file in filesToMove)
  File.Move(
    file, 
    Path.Combine(Path.GetDirectoryName(file), prefix + Path.GetFileName(file)));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...