C#中,将Excel文件X,从文件夹A复制到文件夹B内,需要检测文件夹B内是否已经含有文件X的同名文件,如果已经有同名文件,弹出提示框
时间: 2024-09-07 07:02:00 浏览: 32
在C#中,你可以使用`System.IO`命名空间下的`File.Copy`方法来复制Excel文件,并结合`Directory.GetFiles`方法检查目标文件夹中是否存在同名文件。以下是一个示例代码片段:
```csharp
using System;
using System.IO;
public static void CopyAndCheck(string sourceFilePath, string destinationFolderPath)
{
// 检查目标文件夹是否存在,不存在则创建
if (!Directory.Exists(destinationFolderPath))
{
Directory.CreateDirectory(destinationFolderPath);
}
// Excel文件路径
string destFileName = Path.GetFileName(sourceFilePath);
// 获取目标文件夹中已有的所有Excel文件名
string[] existingFiles = Directory.GetFiles(destinationFolderPath, "*.xlsx"); // 或者".xls" 如果是旧版本
// 遍历现有文件列表
foreach (string existingFile in existingFiles)
{
// 如果找到同名文件
if (Path.GetFileName(existingFile) == destFileName)
{
// 弹出提示框告知用户文件已存在
using (var messageBox = new System.Windows.Forms.MessageBox.Show($"文件 '{destFileName}' 已经存在于文件夹 '{destinationFolderPath}' 中。是否要覆盖?", "警告", MessageBoxButtons.YesNo);
{
if (messageBox.DialogResult != DialogResult.Yes)
{
return; // 用户选择不覆盖,退出操作
}
}
break; // 如果找到就停止检查,然后继续复制
}
}
// 文件不存在或者用户选择覆盖,开始复制
try
{
File.Copy(sourceFilePath, Path.Combine(destinationFolderPath, destFileName), true); //第三个参数表示替换已有文件
}
catch (Exception ex)
{
Console.WriteLine($"复制文件时发生错误: {ex.Message}");
}
}
// 调用函数
CopyAndCheck(@"C:\FolderA\file.xlsx", @"C:\FolderB");
```
这个代码首先检查目标文件夹,如果不存在则创建。然后它获取目标文件夹中所有的Excel文件,如果有同名文件,会显示一个消息框询问用户是否覆盖。只有在用户确认覆盖后,才会尝试复制文件。
阅读全文