9

私は、時間を稼ぐために多くのことを行う一連のアクションを自動化している最中です。これには、ファイルの移動といくつかのバッチの開始が含まれます。

この特定の状況で、ある場所から別の場所にファイルをコピーしようとしています。ATOMIC_MOVEコピーオプションを使用しようとするまで、すべて正常に動作します。これは私のコードです:

private void copyToDropFolder(Datafile datafile, String company) throws IOException{
    Path datafilePath = datafile.getDataPath();  
    String dropFolder = locations.getLocationFor("default");
    Path dropPath = Paths.get(dropFolder, company.toUpperCase(),locations.getLocationFor("drop"), datafile.getFileName());
    Files.copy(datafilePath, dropPath, StandardCopyOption.ATOMIC_MOVE);
}

datafilePath と dropPath の場所を確認して解決しましたが、どちらも有効です。他の 2 つの標準コピー オプションを試しましたが、プログラムは正常に動作します。それはATOMIC_MOVE私が得るためだけですUnsupportedOperationException。その特定のオプションが絶対に必要というわけではありませんが、なぜ機能しないのか興味があります。この問題に関する他のレポートを実際に見つけることはできません。私はこれをWindows 7マシンで行っています。

何か不足していますか?それともATOMIC_MOVEサポートされていないだけですか?

4

2 に答える 2

25

APIが言うように、ATOMIC_MOVEはサポートされていませcopy()move()

于 2013-07-03T10:54:31.493 に答える
5

ATOMIC_MOVEコピー操作ではなく、移動操作用です。

一方、 を使用して、いわゆる「ハード リンク」を作成できますFiles.createLink()。もありますcreateSymbolicLink()が、これはおそらくあなたがここで望むものではありません。

もちろん、.createLink()ソースと宛先のパスが同じファイルシステム上にある場合にのみ機能します。

于 2013-07-03T11:07:16.487 に答える