Regarding your first question, since Java 7 you can use Files#move:
Files.move(path, targetPath);
, , ATOMIC_MOVE:
import static java.nio.file.StandardCopyOption.ATOMIC_MOVE;
Files.move(path, targetPath, ATOMIC_MOVE);
, :
AtomicMoveNotSupportedException, (, ).REPLACE_EXISTING, , , , , , IOException.