首页 > 解决方案 > 如果文件名前缀则跳过,如果不添加前缀

问题描述

我想检查文件名是否包含prefix,如果是,如果不添加则跳过prefix它。所以代码应该:

  1. 浏览文件夹中的所有文件
  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);
}

标签: c#file

解决方案


您可以借助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)));

推荐阅读