【发布时间】:2015-05-31 14:50:44
【问题描述】:
我有一个特定的文件,即使它是由我自己的进程编写的,也无法删除:
Files.copy(source, destination, StandardCopyOption.REPLACE_EXISTING);
Files.deleteIfExists(destination);
无论我尝试什么,我总能得到:
java.nio.file.AccessDeniedException: C:\ProgramData\FAForever\bin\BsSndRpt.exe
at sun.nio.fs.WindowsException.translateToIOException(Unknown Source) ~[na:1.8.0_45]
at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source) ~[na:1.8.0_45]
at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source) ~[na:1.8.0_45]
at sun.nio.fs.WindowsFileSystemProvider.implDelete(Unknown Source) ~[na:1.8.0_45]
at sun.nio.fs.AbstractFileSystemProvider.deleteIfExists(Unknown Source) ~[na:1.8.0_45]
at java.nio.file.Files.deleteIfExists(Unknown Source) ~[na:1.8.0_45]
所有其他文件,具有完全相同的用户/组权限和所有者,没有这个问题。不,文件没有打开,因为我只是把它复制到那里。
这怎么可能?我怎么知道? (ProcMon 只给出“BUFFER OVERFLOW”但没有访问冲突左右)我该如何解决它?
【问题讨论】:
-
它必须是Java还是可以忽略文件是如何被删除的?
-
您是否尝试过 procexp 及其查找句柄函数来找出可能阻止文件的人?它可能是未关闭的句柄或您的防病毒软件