En resumen:
Files.move(source, source.resolveSibling("newname"));
más detalle:
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
La siguiente es copiada directamente de http://docs.oracle.com/javase/7/docs/api/index.html:
Supóngase que se desea cambiar el nombre de un archivo a "newname", manteniendo el archivo en el mismo directorio:
Path source = Paths.get("path/here");
Files.move(source, source.resolveSibling("newname"));
Alternativamente, supongamos que queremos mover un archivo de directorio nuevo, manteniendo el mismo nombre de archivo y reemplazar cualquier archivo existente con ese nombre en el directorio:
Path source = Paths.get("from/path");
Path newdir = Paths.get("to/path");
Files.move(source, newdir.resolve(source.getFileName()), REPLACE_EXISTING);
Su último párrafo no describe una operación de cambio de nombre en absoluto. Describe una operación de adición. – EJP