有没有更有效的方式写入文件?

时间:2014-01-11 21:55:56

标签: java plugins minecraft performance bukkit

我正在写一个Bukkit(对于那些不知道的人:“简化运行和管理Minecraft服务器的Mod和插件。包括论坛和文档。”)插件将用户的命令存储到各自的文件中。我觉得我写的代码非常低效。

每次PlayerCommandPreprocessEvent触发时(每次输入开头都带有“/”的消息),我都会创建一个变量......

PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(fM.retrievePlayerFile(e.getPlayer().getName()), true)))

然后我写入该特定播放器的文件,然后关闭输出。

低效?是的,我想是的......

有更简单,更有效的方法吗?

提前致谢。

修改: fM.retrievePlayerFile(Player player)就是这样:

public File retrievePlayerFile(String player) {
    player = player.toLowerCase();
    return (new File(plugin.getDataFolder(), "/users/" + player));
}

1 个答案:

答案 0 :(得分:0)

如果每次都无法打开和关闭文件,那么可能会加快速度。
也许你可以一直保持开放状态(不确定你的具体情况)。

如果没有,您可以尝试其他优化方法。

1)您可以在用户注销时关闭它。 2)如果用户N分钟没有活动,您可以使用一些启发式并关闭它。 2)一个可能的想法是只保留那些最活跃的开放。您可以在过去的M分钟内以某种方式跟踪用户的活动,获取前K个用户,并仅保留其文件。

代码本身并不是那么低效,至少我看不出你如何能够更好地改进对文件的写入。我建议你改变一下你的整体算法/设计,并尝试改进。