如何(StartsWith)从第 4 个字母开始?

我有个问题。我想通过单击按钮将“新文件夹”中的特定文件复制到“目标”文件夹。在“新文件夹”中包含各种不同名称的文件。例如:“abcUCU0001”、“abbUCA0003”、“hhhUCU0012”、“aaaUCS0012”等等。“新文件夹”包含超过1000 个文件,并且名称中有相同的 10 个字母。我想复制 10 个文件,它的名称必须有"UCU"。我不知道如何使用(startsWith)从第 4 个字母开始进行复制。对不起我的语法不好。


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”的文件将复制到目标文件夹。


慕斯709654
浏览 89回答 2
2回答

侃侃无极

如果所有文件都在同一个目录中(没有子目录),那么您可以使用以下方法获取所有文件:    //assuming diCopyForm is the new folder reference    // ? denotes 1 character while * is multiple chars    var files = diCopyForm.GetFiles("???UCU*"); 然后将它们复制过来。对于更复杂的条件,我会获取所有文件并使用 LINQ 进行过滤。有关所用搜索模式的详细信息如果文件夹中有很多文件,那么使用EnumerateFiles方法可能更有效EnumerateFiles 和 GetFiles 方法的区别如下: 使用 EnumerateFiles 时,可以在返回整个集合之前开始枚举名称集合;使用 GetFiles 时,必须等待返回整个名称数组,然后才能访问该数组。因此,当您处理许多文件和目录时,EnumerateFiles 会更有效率。

慕的地8271018

您可以使用string.IndexOf检查文件名是否在第 4 个位置有“UCU” ://string filename = "UCU";if (file.FullName.IndexOf(filename) == 3)
打开App,查看更多内容
随时随地看视频慕课网APP