如何重命名文件,Java.nio?

How to rename file, Java.nio?

有一个存储"client_storage/",我需要重命名其中的文件。

使用TextInputDialog重命名。

TextInputDialog 工作正常。

但是我在 Files.move() 方法中有一个 Exception

这是我的代码:

    public void renameFile(ActionEvent actionEvent) {
    TextInputDialog dialog = new TextInputDialog("Rename");
    dialog.setTitle("Rename");
    dialog.setHeaderText("Rename File");
    dialog.setContentText("New name");
    Optional<String> res = dialog.showAndWait();

    if (res.isPresent()) {
        try {
            Path paths = Paths.get("client_storage/" + ClientListView.getSelectionModel().getSelectedItems());
            Files.move(paths, paths.resolve(res.get()), StandardCopyOption.REPLACE_EXISTING);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

这一行出现异常:

Files.move(paths, paths.resolve(res.get()), StandardCopyOption.REPLACE_EXISTING);

我做错了什么?

java.nio.file.NoSuchFileException: client_storage\[text file.txt];

ClientListView.getSelectionModel().getSelectedItems() returns 一个列表,因此错误消息中有括号。

我猜是这样的

 Path paths = Paths.get("client_storage/" + ClientListView.getSelectionModel().getSelectedItems());

 Path paths1 = Paths.get("client_storage/" + newName);

 Files.move(paths, paths1, StandardCopyOption.REPLACE_EXISTING);

像这样工作:

 public void renameFile(ActionEvent actionEvent) {
    TextInputDialog dialog = new TextInputDialog("Rename");
    dialog.setTitle("Rename");
    dialog.setHeaderText("Rename File");
    dialog.setContentText("New name");
    Optional<String> res = dialog.showAndWait();
    if (res.isPresent()) {
        try {
            Path paths = Paths.get("client_storage/" + ClientListView.getSelectionModel().getSelectedItem());
            Files.move(paths, paths.resolveSibling(res.get()));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}