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 に答える