0

我正在使用以下方法将文件从一个文件夹(源)移动到另一个(目标)。我添加了一个检查以查看返回 true 的文件是否存在,但文件仍然没有移动到目的地。

这里的源路径是:

C:\App_v10.4\RAP009.jrxml 和 C:\App_v10.4\RAP009.jasper

目的地 :

C:\Users\Avijit\Desktop\RAP009.jrxml 和 C:\Users\Avijit\Desktop\RAP009.jasper

private void moveFile(List<String> source, String destination)
        throws IOException {

    if (null != source && !source.isEmpty()) {
        for (String path : source) {
            try {
                File file = new File(path);
                System.out.println(path);
                System.out.println("File :" + file.exists());
                System.out.println(new File(destination + file.getName()));
                System.out.println(file.getCanonicalPath());
                System.out.println(file.getAbsolutePath());
                System.out.println(file.getPath());
                if (file.renameTo(new File(destination + file.getName()))) {
                    System.out.println("File is moved successful!");
                } else {
                    System.out.println("File has failed to move!");
                }

            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

}

控制台 O/P:

C:\App_v10.4\RAP009.jrxml

File :true
C:\Users\Avijit\Desktop\RAP009.jrxml

C:\App_v10.4\RAP009.jrxml

C:\App_v10.4\RAP009.jrxml

C:\App_v10.4\RAP009.jrxml

File has failed to move!

C:\App_v10.4\RAP009.jasper

File :true

C:\Users\Avijit\Desktop\RAP009.jasper

C:\App_v10.4\RAP009.jasper

C:\App_v10.4\RAP009.jasper

C:\App_v10.4\RAP009.jasper

File has failed to move!
4

1 回答 1

0

根据File的 api ,

“这种方法的行为的许多方面本质上是依赖于平台的:重命名操作可能无法将文件从一个文件系统移动到另一个文件系统,它可能不是原子的,如果具有目标抽象的文件可能不会成功路径名已存在。应始终检查返回值以确保重命名操作成功。"

所以有使用的警告renameTo

但是,您的案例可能会遇到另一个问题。如果目录结构不存在,它将失败。在 Java 7 中,这已通过Files.move修复。即使子目录不存在问题结果不是罪魁祸首,这种方法也会提供更可靠的性能。

于 2014-05-12T18:48:51.733 回答