C# 如何以第四个字母开头?

C# 如何以第四个字母开头?,c#,winforms,visual-studio-2012,startswith,C#,Winforms,Visual Studio 2012,Startswith,我有个问题。我想通过单击按钮将“新建文件夹”中的特定文件复制到“目标”文件夹中。“新文件夹”中包含不同名称的各种文件。例如:“ABCU0001”,“abbUCA0003”,“HHUCU0012”,“aaaUCS0012”等等“新文件夹”包含1000多个文件,名称中有10个字母相同。我要复制10个文件,其名称必须为“UCU”。我不知道如何使用(startsWith)从第四个字母开始复制。 对不起,我语法不好 private void button1_Click(object sender, Eve

我有个问题。我想通过单击按钮将“新建文件夹”中的特定文件复制到“目标”文件夹中。“新文件夹”中包含不同名称的各种文件。例如:“ABCU0001”“abbUCA0003”“HHUCU0012”“aaaUCS0012”等等“新文件夹”包含1000多个文件,名称中有10个字母相同。我要复制10个文件,其名称必须为“UCU”。我不知道如何使用(startsWith)第四个字母开始复制。 对不起,我语法不好

private void button1_Click(object sender, EventArgs e)
{
    string FROM_DIR = @"C:\Users\Desktop\Source";
    string TO_DIR = @"C:\Users\Desktop\Target";
    DirectoryInfo diCopyForm = new DirectoryInfo(FROM_DIR);
    DirectoryInfo[] fiDiskfiles = diCopyForm.GetDirectories();
    string filename = "UCU";
    int count = 0;
    foreach (DirectoryInfo newfile in fiDiskfiles)
    {
       try
       {
            if (newfile.Name=="New folder")
            {
                foreach (FileInfo file in newfile.GetFiles())
                {
                    if(file.FullName.StartsWith(filename))
                    {
                        File.Copy(file.FullName, Path.Combine(TO_DIR,file.Name));
                        count++;
                        if (count == 10)
                        {
                            break;
                        }
                    }
                }
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }
    MessageBox.Show("success");
}

我希望在单击一个按钮后,10个名为“UCU”的文件将复制到目标文件夹。

您可以使用以下命令检查文件名是否在第4位有“UCU”:


如果所有文件都在同一目录中(没有子目录),则可以使用以下方法获取所有文件:

    //assuming diCopyForm is the new folder reference
    // ? denotes 1 character while * is multiple chars
    var files = diCopyForm.GetFiles("???UCU*"); 
然后把它们复制过来。对于更复杂的条件,我将获取所有文件并使用LINQ进行过滤

如果文件夹中有很多文件,那么使用该方法可能会更有效

EnumerateFiles和GetFiles方法的区别如下: 使用EnumerateFiles,可以开始枚举名称集合 在归还全部藏品之前;当您使用GetFiles时 必须等待返回整个名称数组,然后才能 访问阵列。因此,当您处理许多文件和 目录、枚举文件可以更高效


您需要复制包含UCU的精细名称吗??或者在位置4包含UCU??您好,先生,在位置4包含UCU
if(file.Name.StartsWith(filename))
-您不想检查全名,例如
C:\MyFolder\…
UCU
开头谢谢,先生,我已经将全名改为Name,现在可以使用此代码if(file.FullName.IndexOf(filename)==3)
    //assuming diCopyForm is the new folder reference
    // ? denotes 1 character while * is multiple chars
    var files = diCopyForm.GetFiles("???UCU*");