在Spigot/Bukkit的我的Minecraft服务器插件中,我试图删除一个世界的数据目录,但卸载了这个世界及其块后,仍然无法删除某些文件和目录。如何删除Bukkit服务器上的世界数据目录?
这里是我的代码的显著部分:
Server server = Backup.getPlugin(Backup.class).getServer();
World world = server.getWorld("world");
File active = world.getWorldFolder();
// Unload the world.
server.unloadWorld(world, false);
// Unload the chunks.
Chunk[] chunks = world.getLoadedChunks();
for (Chunk chunk : chunks) {
chunk.unload(false);
}
ServerManager.deleteDirectory(active);
ServerManager.deleteDirectory(文件)利用Apache的FileUtils.deleteQuietly(文件),并适用于其他的功能,但无法在数据目录中删除一些文件最近卸载的世界,很可能是因为服务器仍在使用某些文件。
我的主要问题:我如何确保世界数据目录不再使用,因此它可以被删除?
确保瞬移是可能在这个世界了所有玩家。另外我不认为卸载每个块是必要的,因为这是通过'unloadWorld()完成的' – Squiddie
尝试使用'FileUtils.deleteDirectory(directory)'。如果它不起作用,请告诉我们日志。 'FileUtils.deleteQuietly'没有抛出任何异常,所以我们不知道是什么问题。 – SocketByte
@Squiddie:所有玩家都会被踢,但即使没有玩家在整个服务器上线,它也会失败。我还在下面创建错误日志之前删除了块卸载。 – Gentle153