Search code examples
c#.netexceptionreturn-valuefile-copying

How to know that File.Copy succeeded?


The static method File.Copy(String, String) doesn't return a value. How can I know programatically if that function succeeded or not ? If there is no thrown exception, File.Copy goes well. But I am asking about how to put "no exception" as a condition.

Something like this:

if(no exception happened){

//my code goes here

}

Edit: I have solved the problem using a simple counter as following:

int i=0;
try{
    File.Copy();
}
catch(e1){
    i++;
}
catch(e2){
    i++;
}

if(i==0){
    //my code goes here
}

Thanks for all contributors. I will go through your answers to choose the best.


Solution

  • If the operation doesn't throw any exception, it means that it was successful. The list of the possible exceptions is available here :

    UnauthorizedAccessException

    • The caller does not have the required permission.

    ArgumentException

    • sourceFileName or destFileName is a zero-length string, contains only white space, or contains one or more invalid characters as defined by InvalidPathChars.

    • -or-

    • sourceFileName or destFileName specifies a directory.

    ArgumentNullException

    • sourceFileName or destFileName is null.

    PathTooLongException

    • The specified path, file name, or both exceed the system-defined maximum length. For example, on Windows-based platforms, paths must be less than 248 characters, and file names must be less than 260 characters.

    DirectoryNotFoundException

    • The path specified in sourceFileName or destFileName is invalid (for example, it is on an unmapped drive).

    FileNotFoundException

    • sourceFileName was not found.

    IOException

    • destFileName exists.

    • -or-

    • An I/O error has occurred.

    NotSupportedException

    • sourceFileName or destFileName is in an invalid format.