Captain Comic
Captain Comic

Reputation: 16196

'File.Copy' does not overwrite a file

Using the following code, I am trying to overwrite a file if it exists. Currenly it throws IOException. How can I fix this problem?

File.Copy(filePath, newPath);

Upvotes: 71

Views: 82419

Answers (7)

elsni
elsni

Reputation: 2053

File.Copy(filePath, newPath, bool overwrite)

does it.

Upvotes: 5

Shahin Rahbar
Shahin Rahbar

Reputation: 306

This can help you:

I use this and it works,

File.Copy(src,des,true); //(string source, string destination, bool overwrite)

Reference (MSDN): File.Copy Method (String, String, Boolean)

Upvotes: 5

davisoa
davisoa

Reputation: 5439

There is an overload to this function that contains a third parameter. This parameter is called "overwrite". If you pass true, as long as the file is not read-only, it will be overwritten.

Upvotes: 20

CodingGorilla
CodingGorilla

Reputation: 19842

From MSDN, you can do:

File.Copy(filePath, newPath, true);

Upvotes: 7

jason
jason

Reputation: 241641

Then use the other File.Copy(string, string, boolean). The third parameter indicates whether or not to overwrite the destination file if it exists (true if you want overwrite, false otherwise).

But what did you expect? If the function is designed to throw when the destination file exists, you need to find a way around that problem. So either:

  1. Search the documentation or Intellisense for an overload that does what you are asking.
  2. Barring that, create a wrapper around File.Copy(string, string) that deletes the destination file for you if it exists.

Upvotes: 6

CodesInChaos
CodesInChaos

Reputation: 108800

Use

File.Copy(filePath, newPath, true);

The third parameter is overwrite, so if you set it to true the destination file will be overwritten.

See: File.Copy in the MSDN

Upvotes: 170

blowdart
blowdart

Reputation: 56500

Then call the overload

File.Copy(filePath, newPath, true);

Upvotes: 13

Related Questions