使用 file.renameTo returns false 在两个不同的文件系统之间移动文件

move file between two different filesystems using file.renameTo returns false

file.renameTo 方法 returns 错误,在 docker container 中。我在容器实例中使用 PVC

我尝试移除 PVC,然后它工作正常,但是当我使用 PVC 时 returns false

Returns false 表示文件未移动或重命名。

在我的例子中,文件从 PVC 位置移动到 docker 容器指定位置。

当我们在 Kubernetes 集群上启用 PVC 时,存储在不同的 filesystem.

我认为这个问题与文件从一个文件系统移动到另一个文件系统有关。因为当 PVC 未启用时 file.renameTo 工作正常,但当 PVC 启用时它会失败。

所以我的问题是有什么可能的方法来解决这个问题。我无法禁用 PVC 那么将文件从一个文件系统移动到另一个文件系统的可能解决方案是什么。

根据我的假设,当我们使用 PVC 时,您的存储位于不同的位置,您的 docker 容器位于不同的位置。

因此,在这种情况下,文件移动有点复杂。在这种情况下,我使用的解决方案是将文件复制并粘贴到目标位置。

public void copyFile(File pvcFileLocation, File dockerContainerLocation){

      FileInputStream inputStream = new FileInputStream(pvcFileLocation);
      FileOutputStream outputStream = new FileOutputStream(dockerContainerLocation);
      int b = -1;
      while ((b = inputStream.read()) != -1) {
        outputStream.write(b);
      }
      inputStream.close();
      outputStream.close();
    }