From javadoc documentation of renameTo: "it might not succeed if a file with the destination abstract pathname already exists"

If fil2.exists() is true, you are exactly in the condition stated...