我有個問題。我想通過單擊按鈕將“新文件夾”中的特定文件復制到“目標”文件夾。在“新文件夾”中包含各種不同名稱的文件。例如:“abcUCU0001”、“abbUCA0003”、“hhhUCU0012”、“aaaUCS0012”等等?!靶挛募A”包含超過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 關注
- 76 瀏覽
添加回答
舉報
0/150
提交
取消