C# 使用c将浏览过的文件保存到预定义的文件夹#

C# 使用c将浏览过的文件保存到预定义的文件夹#,c#,winforms,C#,Winforms,我正在使用c#开发一个WinForm应用程序。我正在使用按钮浏览图像文件(.jpeg或.bmp)。当用户浏览文件并单击“确定”时,单击另一个“继续或更新”按钮,我希望浏览的文件应重命名并保存到预定义的目录中,默认情况下,所有图像文件都将保存在该目录中,而无需太多用户交互 我怎样才能做到这一点?我使用openFileDialog浏览文件,但不知道还能做什么。您可以使用file.Copy()方法来完成。只需将预定义目录和新文件名作为目标参数 有关更多信息,请参阅 在复制方法上。首先,您必须实现一个可

我正在使用c#开发一个WinForm应用程序。我正在使用按钮浏览图像文件(.jpeg或.bmp)。当用户浏览文件并单击“确定”时,单击另一个“继续或更新”按钮,我希望浏览的文件应重命名并保存到预定义的目录中,默认情况下,所有图像文件都将保存在该目录中,而无需太多用户交互


我怎样才能做到这一点?我使用openFileDialog浏览文件,但不知道还能做什么。

您可以使用file.Copy()方法来完成。只需将预定义目录和新文件名作为目标参数

有关更多信息,请参阅


在复制方法上。

首先,您必须实现一个可以生成唯一文件名的复制功能:

private void CopyWithUniqueName(string source, 
                                string targetPath,
                                string targetFileName)
{
    string fileName = Path.GetFileNameWithoutExtension(targetFileName);
    string extension = Path.GetExtension(targetFileName);

    string target = File.Exists(Path.Combine(targetPath, targetFileName);
    for (int i=1; File.Exists(target); ++i)
    {
        target = Path.Combine(targetPath, String.Format("{0} ({1}){2}",
            targetFileName, i, extension));
    }

    File.Copy(source, target);
}
然后您可以使用它,假设
defaultTargetPath
是复制图像的默认目标文件,而
defaultFileName
是图像的默认文件名:

void button1_Click(object sender, EventArgs e)
{
    if (openFileDialog1.ShowDialog() != DialogResult.OK)
        return;

    CopyWithUniqueName(openFileDialog1.FileName, 
        defaultTargetPath, defaultFileName);
}
如果有多个选择:

foreach (string fileName in openFileDialog1.FileNames)
{
    CopyWithUniqueName(fileName, 
        defaultTargetPath, defaultFileName);
}
您将得到以下结果(假设
defaultFileName
为“Image.png”):

源目标 A.png Image.png B.png图像(1).png C.png图像(2.png)
有两种方法可以做到这一点。一种方法是使用file.copy复制文件,另一种方法是将图像流加载到程序中并保存到其他地方。你希望用户能够编辑图像,还是仅仅是一个直接副本?一个直接副本,但有理想的名称,我的意思是我需要根据命名约定重命名文件!我发布的代码演示了如何使用File.Copy。我可以将完整路径指定为第二个参数吗?是的,第一个和第二个参数可以使用绝对路径或相对路径。
foreach (string fileName in openFileDialog1.FileNames)
{
    CopyWithUniqueName(fileName, 
        defaultTargetPath, defaultFileName);
}
Source Target A.png Image.png B.png Image (1).png C.png Image (2).png