c#用SaveFileDialog生成CSV文件,若路径下存在同名文件时,如何让SaveFileDialog生成的文件名自动加上一个_1
时间: 2024-09-18 11:04:27 浏览: 31
在 C# 中,使用 `SaveFileDialog` 和 `StreamWriter` 来生成 CSV 文件并处理同名文件的问题,你可以创建一个自定义的文件名生成策略。以下是一个示例:
```csharp
using System;
using System.IO;
using System.Windows.Forms;
public class CustomSaveFileDialog
{
public string SaveCSV(string initialFileName, string baseDirectory)
{
// 创建 SaveFileDialog 对象
SaveFileDialog saveDialog = new SaveFileDialog
{
Filter = "CSV files (*.csv)|*.csv",
InitialDirectory = baseDirectory,
FileName = initialFileName
};
// 如果用户选择了一个文件并且文件已存在,则增加序号
if (saveDialog.ShowDialog() == DialogResult.OK && File.Exists(saveDialog.FileName))
{
int index = 1;
string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(saveDialog.FileName);
while (File.Exists($"{saveDialog.FileName}_{index}.csv"))
{
index++;
}
saveDialog.FileName = $"{fileNameWithoutExtension}_{index}.csv";
}
// 如果用户选择了保存,尝试写入文件
if (saveDialog.FileName != null && saveDialog.FileName.Length > 0)
{
using (StreamWriter writer = new StreamWriter(saveDialog.FileName))
{
// 写入CSV数据...
writer.WriteLine("Column1, Column2, Column3"); // 示例行,实际替换为你的数据
}
}
return saveDialog.FileName; // 返回最终保存的文件路径
}
}
// 使用方法
CustomSaveFileDialog csvGenerator = new CustomSaveFileDialog();
string filePath = csvGenerator.SaveCSV("MyData.csv", @"C:\Users\YourUsername\Documents"); // 替换为你希望保存的初始目录和文件名
```
在这个例子中,当用户选择的文件名已经存在时,程序会检查是否有以 `_1`, `_2`, 等形式存在的文件,并自动加序列号直到找到一个可用的名字。