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

时间:2012-10-15 10:43:03

标签: c# winforms

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

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

3 个答案:

答案 0 :(得分:5)

//detination filename
string newFileName = @"C:\NewImages\NewFileName.jpg";    

// if the user presses OK instead of Cancel
if (openFileDialog1.ShowDialog() == DialogResult.OK) 
{
    //get the selected filename
    string filename = openFileDialog1.FileName; 

    //copy the file to the new filename location and overwrite if it already exists 
    //(set last parameter to false if you don't want to overwrite)
    System.IO.File.Copy(filename, newFileName, true);
}
复制方法

More information

答案 1 :(得分:1)

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

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”):

Source   Target
A.png    Image.png
B.png    Image (1).png
C.png    Image (2).png

答案 2 :(得分:0)

您可以使用File.Copy()方法执行此操作。只需将预定义目录和新文件名作为目标参数。

有关详细信息,请参阅here