項目前言
在日常工作和生活中,我們常常會遇到需要從大量文件中根據文件名批量查找特定文件并復制到指定位置的情況。手動一個個查找和復制文件不僅效率低下,還容易出錯。使用 Windows Presentation Foundation (WPF) 可以創建一個用戶友好的圖形界面應用程序,方便用戶輸入文件名列表、選擇源文件夾和目標文件夾,然后自動完成文件的查找和復制操作,提高工作效率。
詳細步驟
1. 創建 WPF 項目
打開 Visual Studio,創建一個新的 WPF 應用程序項目。
2. 設計界面
在MainWindow.xaml
文件中設計界面,包含輸入文件名列表的文本框、選擇源文件夾和目標文件夾的按鈕、顯示文件夾路徑的文本框以及執行查找和復制操作的按鈕。
3. 實現業務邏輯
在MainWindow.xaml.cs
文件中實現文件夾選擇、文件查找和復制的邏輯。
4. 運行程序
編譯并運行程序,測試功能。
代碼實現
MainWindow.xaml
<Window x:Class="FileSearchAndCopy.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="文件查找和復制" Height="450" Width="800"><Grid><Label Content="文件名列表(每行一個):" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top"/><TextBox x:Name="FileNameListTextBox" HorizontalAlignment="Left" Height="150" Margin="10,30,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="760"/><Label Content="源文件夾:" HorizontalAlignment="Left" Margin="10,190,0,0" VerticalAlignment="Top"/><TextBox x:Name="SourceFolderTextBox" HorizontalAlignment="Left" Height="23" Margin="10,210,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="600"/><Button Content="選擇源文件夾" HorizontalAlignment="Left" Margin="620,210,0,0" VerticalAlignment="Top" Width="150" Click="SelectSourceFolderButton_Click"/><Label Content="目標文件夾:" HorizontalAlignment="Left" Margin="10,250,0,0" VerticalAlignment="Top"/><TextBox x:Name="TargetFolderTextBox" HorizontalAlignment="Left" Height="23" Margin="10,270,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="600"/><Button Content="選擇目標文件夾" HorizontalAlignment="Left" Margin="620,270,0,0" VerticalAlignment="Top" Width="150" Click="SelectTargetFolderButton_Click"/><Button Content="查找并復制文件" HorizontalAlignment="Left" Margin="300,320,0,0" VerticalAlignment="Top" Width="200" Click="SearchAndCopyFilesButton_Click"/><TextBlock x:Name="StatusTextBlock" HorizontalAlignment="Left" Margin="10,370,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="760"/></Grid>
</Window>
MainWindow.xaml.cs
using System;
using System.IO;
using System.Windows;
using System.Windows.Forms;
using MessageBox = System.Windows.MessageBox;namespace FileSearchAndCopy
{public partial class MainWindow : Window{public MainWindow(){InitializeComponent();}private void SelectSourceFolderButton_Click(object sender, RoutedEventArgs e){using (var folderBrowserDialog = new FolderBrowserDialog()){if (folderBrowserDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK){SourceFolderTextBox.Text = folderBrowserDialog.SelectedPath;}}}private void SelectTargetFolderButton_Click(object sender, RoutedEventArgs e){using (var folderBrowserDialog = new FolderBrowserDialog()){if (folderBrowserDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK){TargetFolderTextBox.Text = folderBrowserDialog.SelectedPath;}}}private void SearchAndCopyFilesButton_Click(object sender, RoutedEventArgs e){try{string sourceFolder = SourceFolderTextBox.Text;string targetFolder = TargetFolderTextBox.Text;string[] fileNames = FileNameListTextBox.Text.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);if (string.IsNullOrEmpty(sourceFolder) || string.IsNullOrEmpty(targetFolder) || fileNames.Length == 0){MessageBox.Show("請輸入文件名列表、選擇源文件夾和目標文件夾。");return;}if (!Directory.Exists(sourceFolder)){MessageBox.Show("源文件夾不存在。");return;}if (!Directory.Exists(targetFolder)){Directory.CreateDirectory(targetFolder);}int copiedCount = 0;foreach (string fileName in fileNames){string[] foundFiles = Directory.GetFiles(sourceFolder, fileName, SearchOption.AllDirectories);foreach (string foundFile in foundFiles){string destinationFilePath = Path.Combine(targetFolder, Path.GetFileName(foundFile));File.Copy(foundFile, destinationFilePath, true);copiedCount++;}}StatusTextBlock.Text = $"共復制了 {copiedCount} 個文件。";}catch (Exception ex){MessageBox.Show($"發生錯誤: {ex.Message}");}}}
}
總結
通過 WPF 創建的這個文件查找和復制應用程序,用戶可以方便地輸入文件名列表、選擇源文件夾和目標文件夾,然后自動完成文件的查找和復制操作。該程序利用了 WPF 的圖形界面設計能力和.NET 的文件操作功能,實現了一個簡單而實用的工具。在實際開發中,還可以進一步擴展功能,如添加進度條顯示復制進度、支持更多的文件查找規則等。同時,需要注意異常處理,確保程序在遇到各種情況時都能穩定運行。