我运行一个检查终端的单元测试。执行端点时,它将把日志写入日志目录。我想在单元测试完成后删除此日志文件。但是我收到以下异常:
java.nio.file.FileSystemException: C:\Users\dev\IdeaProjects\users\src\main\resources\log\events The process cannot access the file, as this file is being used by another process.
我有以下方法:
public static void deleteLogDir() throws IOException {
String logEventPath = System.getProperty("user.dir") + "/users/src/main/resources/log/events";
Path path = Paths.get(logEventPath);
Files.list(path).forEach(e -> {
try {
Files.deleteIfExists(e);
} catch (IOException e1) {
e1.printStackTrace();
}
});
}
@AfterAll
public static void clear() throws IOException {
deleteLogDir();
}
我没有在任何其他程序中打开此文件。当我尝试从test / java目录中删除main / java中的该文件时,将其删除,没有任何问题。当我什至尝试从测试目录中的该文件读取时,都会得到java.nio.file.AccessDeniedException。
如何可以删除此日志文件?
答案 0 :(得分:2)
在Windows操作系统中,其他用户正在使用的文件被锁定,并且无法删除。 唯一的解决方案是在测试结束时关闭 Reader (如果您正在使用的话)。
或者只是转而使用Linux并忘记这种问题;)
显然,关闭LogManager对他有用。
LogManager.shutdown()