Many aspects of the behavior of this method are inherently platform-dependent: The rename operation might not be able to move a file from one filesystem to another, it might not be atomic, and it might not succeed if a file with the destination abstract pathname already exists. The return value should always be checked to make sure that the rename operation was successful.
Here is the quote from the Javadoc for the renameTo() method. Do you think that it has anything to do with the fact that the rename target already exists?
Henry