Search code examples
c#winformsopenfiledialog

Copy a file and change the name


I was asked to make a file copier that will change the name of a file, by adding "_Copy", but will keep the type of file.

For example:

c:\...mike.jpg

to:

c:\...mike_Copy.jpg

Here is my code:

private void btnChseFile_Click(object sender, EventArgs e)
{
    prgrssBar.Minimum = 0;
    OpenFileDialog ofd = new OpenFileDialog();
    ofd.Title = "Which file do you want to copy ?";            

    DialogResult fc = ofd.ShowDialog();                       
    tbSource.Text = ofd.FileName;
    tbDestination.Text = tbSource.Text + "_Copy";          
}

Solution

  • You can use the classes System.IO.FileInfo and System.IO.Path to do what it appears you are attempting:

    OpenFileDialog od = new OpenFileDialog();
    if(od.ShowDialog() == System.Windows.Forms.DialogResult.OK)
    {
        System.IO.FileInfo fi = new System.IO.FileInfo(od.FileName);
        string oldFile = fi.FullName;
    
        string newFile = oldFile.Replace(System.IO.Path.GetFileNameWithoutExtension(oldFile), 
            string.Format("{0}_Copy", 
                System.IO.Path.GetFileNameWithoutExtension(oldFile)));
        MessageBox.Show(newFile);
    }
    

    Then you can call the following to perform the copy:

    System.IO.File.Copy(oldFile, newFile);