我有个问题。我想通过单击按钮将“新文件夹”中的特定文件复制到“目标”文件夹。在“新文件夹”中包含各种不同名称的文件。例如:“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”的文件将复制到目标文件夹。
2 回答

侃侃无极
TA贡献2051条经验 获得超10个赞
如果所有文件都在同一个目录中(没有子目录),那么您可以使用以下方法获取所有文件:
//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
TA贡献1796条经验 获得超4个赞
您可以使用string.IndexOf检查文件名是否在第 4 个位置有“UCU” :
//string filename = "UCU";
if (file.FullName.IndexOf(filename) == 3)
- 2 回答
- 0 关注
- 88 浏览
添加回答
举报
0/150
提交
取消