Java renameTo()函数不移动文件

Java renameTo()函数不移动文件,java,file-io,Java,File Io,我在媒体模块中运行了以下Java代码: File file = new File("/my/path/"+String.format("%02d", date)+"/"+streamAliasRef+".mp4"); // Destination directory File dir = new File("/mnt/s3"); // Move file to new directory boolean success = fi

我在媒体模块中运行了以下Java代码:

File file = new File("/my/path/"+String.format("%02d", date)+"/"+streamAliasRef+".mp4");

        // Destination directory
        File dir = new File("/mnt/s3");

        // Move file to new directory
        boolean success = file.renameTo(new File(dir, file.getName()));
        if (!success) {
            getLogger().info("File failed to move to s3"+file.getName());
        }
        else {
            getLogger().info("File moved to s3 successfully"+ file.getName());
        }
由于某些原因,我一直无法将文件移动到s3


我对Java相当陌生,所以如果这是一个简单的问题,请原谅我。我知道两个目录都存在。可能与此有关的一个重要注意事项是,我正在使用Fuse将S3存储桶装载到文件系统。

在unix上运行的Java中,只有在同一文件系统中,重命名才能工作。因此,如果要跨文件系统移动,则需要复制和删除原始文件。unixmv命令也可以这样做。这就是为什么mv在同一个文件系统上是即时的,但在整个文件系统上却是永久的。它检测不同的文件系统,并在这种情况下执行副本删除。

在unix上运行的Java中,只有在同一文件系统中,重命名才能工作。因此,如果要跨文件系统移动,则需要复制和删除原始文件。unixmv命令也可以这样做。这就是为什么mv在同一个文件系统上是即时的,但在整个文件系统上却是永久的。它检测不同的文件系统,并在这种情况下执行副本删除。

我使用Guava中的此方法在Unix上移动文件以解决此问题:

我使用Guava中的此方法在Unix上移动文件以解决此问题:
首先,你确定吗

new File("/my/path/"+String.format("%02d", date)+"/"+streamAliasRef+".mp4") 

真的存在吗?在尝试移动file.exists之前,是否可以检查它?

首先,您确定

new File("/my/path/"+String.format("%02d", date)+"/"+streamAliasRef+".mp4") 

真的存在吗?在尝试移动文件之前,是否可以检查file.exists?

只有源和目标的整个目录树存在时,才能移动该文件,您可以确认吗?每次都会生成一个新文件,其中包含一个新的StreamAliasRef,是否有方法确认该文件实际抓取了一个文件?您可以使用file.isFile,File.isDirectory和File.exist仅当源和目标的整个目录树存在时,才能移动该文件,您能确认吗?每次都会生成一个新文件,其中包含一个新的StreamAliasRef,是否有方法确认该文件实际抓取了一个文件?您可以使用File.isFile、File.isDirectory和File.exists