I would expect file_move() to have an overwrite-argument. Also, I cannot tell from the documentation whether such implicit behaviour is true or false.