java有没有更有效的文件写入方法?
我正在写一个Bukkit(针对那些不知道的人:“简化运行和管理Minecraft服务器的Mod和插件。包括论坛和文档。”)将用户命令存储到各自文件中的插件。我觉得我写的代码效率非常低
每次启动PlayerCommandPrepreprocessEvent(每次输入开头带有“/”的消息时),我都会创建一个变量,如下所示
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 楼答案
如果不能每次打开和关闭文件,则可能会加快速度
也许你们可以一直打开它(不确定你们的具体情况)
如果没有,您可以尝试其他优化方法
1)当用户注销时,您可以将其关闭。2) 如果用户在N分钟内没有活动,可以使用一些启发式方法关闭它。2) 一个可能的想法是只打开那些真正最活跃的部分。你可以通过某种方式跟踪用户在过去M分钟内的活动,选择前K名用户,只打开他们的文件
代码本身并没有那么低效,至少我看不出你如何能提高文件的写入效率。我建议你改变一下你的整体算法/设计,并尝试改进