无法删除 java 中的文件,因为它是在 Java Platform SE 二进制文件中打开的

And*_*ndy 5 java

我在 Windows 上有三个目录 A、B 和 C。我有一个文件存在于目录 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();
Run Code Online (Sandbox Code Playgroud)

我正在使用 Java 6。你知道我如何完成步骤 4 吗?

Kon*_*ong 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();
Run Code Online (Sandbox Code Playgroud)