这是一个与Bukkit有关的问题,尽管问题存在于我的实际Java代码中。
我的问题是,我试图删除球员的数据,但我无法这样做,未知的原因。Bukkit控制台没有显示任何错误。我甚至用File
的.getAbsolutePath()
来检查我是否得到了正确的文件路径,我得到了。显示结果布尔值也导致false
。
@EventHandler
public void onPlayerLeave(PlayerQuitEvent event) {
final File playerDat = new File("Hub/players/" + event.getPlayer().getName() + ".dat");
this.getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
public void run() {
boolean playerDeleteSuccess = playerDat.delete();
getLogger().info("Absolute path: " + playerDat.getAbsolutePath());
getLogger().info("Success: " + playerDeleteSuccess);
}
}, 10L);
}
您是否确保已经关闭了对文件的任何写/读流?据我所知,任何打开的流都会阻止文件被删除。
尝试在您的文件中使用:
final File configFile = new File(this.getDataFolder(), event.getPlayer().getName() + ".dat");
configFile.delete();
不是获取路径,而是使用此代码获取默认路径,并使用该信息删除配置。
我认为你的问题是你没有告诉bukkit查找哪个文件夹,你只告诉它文件的路径,但它不知道从哪里开始。
要在插件的data文件夹中创建一个配置文件,你可以这样做:
final File configFile = new File(this.getDataFolder(), "/Hub/players/" + event.getPlayer().getName() + ".dat");
configFile.delete();
在获取配置文件之前,您需要检查默认的数据文件夹。默认的数据文件夹是一个与你的插件同名的文件夹。
同样,你可能想尝试把它放在你的onDisable()方法中,看看它是否在那里工作,只是作为一个测试,尽管