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