4

WindowsにA、B、Cの3つのディレクトリがあります。ディレクトリAに存在するファイルがあります。次のタスクを実行したい

  1. ディレクトリBにコピーします
  2. ディレクトリAから削除します(ファイルがどのプロセスにも保持されていなかったため、これは機能しました)
  3. ディレクトリCにコピーします
  4. ディレクトリBから削除します(動作しません)

手順 1、2、3 は正常に機能しますが、手順 4 では機能しません。ファイルが存在し、書き込み、読み取り、実行が可能です。Windows エクスプローラーを開いてディレクトリ B のファイルを手動で削除しようとすると、Java プラットフォーム SE バイナリで開かれているため、操作を完了できないと表示されます。以下は、ファイルをコピーするための私のコードです

        FileInputStream in = new FileInputStream(source);
        FileOutputStream out = new FileOutputStream(dest);

        byte[] buf = new byte[1024];
        int len;

        while ((len = in.read(buf)) > 0) {
            out.write(buf, 0, len);
        }

        in.close();
        out.close();

Java 6 を使用しています。手順 4 を実行する方法を教えてください。

4

3 に答える 3

1

Apache Commons IO (FileUtils) のようなライブラリを使用しないのはなぜですか?

http://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/FileUtils.html

File a = new File("A/file.txt");
File b = new File("B/file.txt");
File c = new File("C/file.txt");
FileUtils.copyFile(a, b);
a.delete();
FileUtils.copyFile(b, c);
b.delete();
于 2013-10-12T00:52:02.440 に答える