Bill M.
Bill M.

Reputation: 201

Renaming the Copy of a Picture

I'm trying to create an album and what I want to do, is to copy a picture from its original path to a specific folder and rename (the copy) right after. Here is a piece of my code (note that "picturedir" is a path):

    string PCname = Environment.UserName;
    Image File;
    OpenFileDialog openfile = new OpenFileDialog();
    openfile.InitialDirectory = @"C:\Users\" + PCname + @"\Pictures";
    if (openfile.ShowDialog() == DialogResult.OK)
    {
       try
       {
           File = Image.FromFile(openfile.FileName);
           pictureBox3.Image = File;

           pictureBox3.Image.Save(picturedir + "\\" + openfile.SafeFileName); 
           System.IO.File.Move(picturedir + "\\" + openfile.SafeFileName,
                               picturedir + "\\" + "1");
       }
       catch (Exception ex)
       {
           MessageBox.Show(ex.Message);
       }
    }

As seen in the last line inside the "try", I want to rename the chosen picture, simply to "1". However, this last line gives an error "Cannot create a file when that file already exists". Any ideas?

P.S.: If I do not use the last "try" line: System.IO.File.Move(picturedir + "\\" + openfile.SafeFileName, picturedir + "\\" + "1"); it does copy the chosen picture but it obviously does not rename it at all.

Upvotes: 1

Views: 586

Answers (1)

BWA
BWA

Reputation: 5764

Here is an article about work with files.

From article:

static void Main()
{
    string fileName = "test.txt";
    string sourcePath = @"C:\Users\Public\TestFolder";
    string targetPath =  @"C:\Users\Public\TestFolder\SubDir";

    // Use Path class to manipulate file and directory paths.
    string sourceFile = System.IO.Path.Combine(sourcePath, fileName);
    string destFile = System.IO.Path.Combine(targetPath, fileName);

    // To copy a folder's contents to a new location:
    // Create a new target folder, if necessary.
    if (!System.IO.Directory.Exists(targetPath))
    {
        System.IO.Directory.CreateDirectory(targetPath);
    }

    // To copy a file to another location and 
    // overwrite the destination file if it already exists.
    System.IO.File.Copy(sourceFile, destFile, true);
}

If you use different file names, you get copy with new name.

Upvotes: 3

Related Questions