我正在使用c#处理WinForm应用程序。我正在使用按钮浏览图像文件(.jpeg或.bmp)。当用户浏览文件并单击“确定”时,单击另一个“继续或更新”按钮,我希望将浏览的文件重命名并保存到预定义的目录中,默认情况下将保存所有图像文件,没有太多用户相互作用!
我怎样才能做到这一点?我使用openFileDialog浏览文件,但不知道还能做什么。
答案 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);
}
复制方法
答案 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