2017-06-25 13 views
0

簡単なJavaプログラムを作成しました。このJavaプログラムでは、2つのディレクトリを1つずつ取り込み、別のディレクトリに移動します。このプログラムは、別のドライブ間でファイルを移動しようとしない限り、正常に動作します。それ以外の場合は空ではないディレクトリを気にしなくても、java.nio.file.DirectoryNotEmptyExceptionが発生します(実際にはすべてを移動する必要があります)。ターゲットのJavaドライブ間でファイルを移動すると、DirectoryNotEmptyExceptionが発生します。

try { 
     Files.move(source, target, StandardCopyOption.REPLACE_EXISTING); 
    } catch (IOException e1) { 
     System.out.println("Something went wrong"); 
     e1.printStackTrace(); 
    } 

答えて

1
Files.move(file, cgbaFile.getParent(), StandardCopyOption.REPLACE_EXISTING); 

、あなたはにファイルを移動したいディレクトリを提供しています。これは間違っています。ターゲットには、ファイルに追加する新しいパス名、つまり新しいディレクトリとファイル名を指定する必要があります。

例えば、/tmp/foo.txt to the /var/tmpディレクトリに移動したいとします。 Files.move("/tmp/foo.txt", "/var/tmp/foo.txt")に電話する必要があるときは、Files.move("/tmp/foo.txt", "/var/tmp")に電話しています。

JVMがファイルと置き換えるためにターゲットディレクトリを削除しようとしているため、その特定のエラーが発生しています。

これらの一つが正しいターゲットパスを生成するべき:

Path target = cgbaFile.resolveSibling(file.getFileName()); 

Path target = cgbaFile.getParent().resolve(file.getFileName()); 
関連する問題