【问题标题】:Move the file to other location将文件移动到其他位置
【发布时间】:2016-01-07 13:52:55
【问题描述】:

我需要将文件移动到其他位置,并为其命名。 我试图做的是:

Files.move(oldName, newName, options);

我得到一个例外:

java.nio.file.NoSuchFileException: /media/sf_VboxShared/Data/csv/res20150201/xx/part-r-00000-f8ed41a5-e0e1-4534-a1d9-e4d6082691db.gz.parquet -> /media/sf_VboxShared/Data/csv/res20150201/res/xx.parquet

oldName 文件存在。 newName 不存在。 (只有这个/media/sf_VboxShared/Data/csv/res20150201部分路径存在)

【问题讨论】:

    标签: java exception copy move


    【解决方案1】:

    您说的是/media/sf_VboxShared/Data/csv/res20150201,但您要将文件移动到的目录的父目录/media/sf_VboxShared/Data/csv/res20150201/xx 不存在。

    所以你必须在移动之前先创建它:

    Path newName = ...;
    Files.createDirectories(newName.getParent());
    

    【讨论】:

      【解决方案2】:

      您可以通过调用创建缺少的父目录:

      Files.createDirectories( Paths.get( <your file path> ).getParent() );
      

      【讨论】:

      • 不需要用旧的 File 对象包装它。实际上这甚至不会编译,因为 newName 是一个 Path 对象。
      • @Puce 是的,它在参数上采用 Path 而不是 File 实例。我刚刚编辑了我的答案
      猜你喜欢
      • 1970-01-01
      • 2020-04-05
      • 2022-07-01
      • 2021-08-21
      • 2018-08-11
      • 1970-01-01
      • 2020-07-12
      • 2017-10-09
      • 1970-01-01
      相关资源
      最近更新 更多