Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我应该如何实现这一点?_Java_File_Parsing - Fatal编程技术网

Java 我应该如何实现这一点?

Java 我应该如何实现这一点?,java,file,parsing,Java,File,Parsing,我有75+个不同的文本文件,其中包含游戏中角色所说的几行对话。文本文件有特殊的命令,游戏会根据当前情况将其解析为正确的输出。例如%PlayerName%会告诉游戏将玩家的名字放在对话的那个位置 当玩家切换已保存的游戏时,当前情况会发生变化,但在其他情况下会保持一段时间不变。最快每1/2秒会讲一行对话 我该怎么办?我提出的两种实现似乎都有优点和缺点 将每个文件中的每一行对话解析到内存中,并在影响输出的情况发生变化时重新加载每一行对话 当对话的某一位将被说出时,从相应的文件中读取并解析该位对话 两者

我有75+个不同的文本文件,其中包含游戏中角色所说的几行对话。文本文件有特殊的命令,游戏会根据当前情况将其解析为正确的输出。例如%PlayerName%会告诉游戏将玩家的名字放在对话的那个位置

当玩家切换已保存的游戏时,当前情况会发生变化,但在其他情况下会保持一段时间不变。最快每1/2秒会讲一行对话

我该怎么办?我提出的两种实现似乎都有优点和缺点

  • 将每个文件中的每一行对话解析到内存中,并在影响输出的情况发生变化时重新加载每一行对话
  • 当对话的某一位将被说出时,从相应的文件中读取并解析该位对话
  • 两者都错了,我应该做些完全不同的事情。(解释)
  • 如果我使用一个,当硬盘驱动器一次打开并读取75个文件时,会不会至少有一点口吃?这样做感觉不对


    如果我使用两个,无论用户玩游戏多长时间,我都会以相当快的速度打开和关闭多个文件。出于某些原因,这样做也感觉不正确。

    如果占用一点RAM不是问题,并且文件中不包含千兆字节的对话,那么您可以在应用程序开始时读入所有文件,并且已经识别出特定的行(即,创建一个包含所有行的数组,以便快速简单地访问)但是随着变量的替换推迟到游戏中实际使用这些行。简单的字符串替换不应在游戏中造成任何明显的延迟


    如果不能将所有文件都保存在内存中,那么您仍然可以保留下一个文件的窗口,比如说三个或四个文件,其中包含可以从播放器当前位置直接访问的对话。随着播放机的前进,新文件在后台加载。这确保了所需的行始终可以立即使用,并且每隔几分钟加载一个新文件不会导致太多IO。

    如果占用一点RAM不是问题,并且文件不包含千兆字节的对话,则可以在应用程序开始时读入所有文件,并且已经识别了特定行(即,制作一个包含所有行的数组,以便快速、简单地访问)但变量的替换延迟到行实际用于游戏中。简单的字符串替换不应在游戏中造成任何明显的延迟


    如果不能将所有文件都保存在内存中,那么您可能仍然可以保留下一个文件的窗口,比如说三个或四个文件,其中包含可以从播放机当前位置直接访问的对话。随着播放机的前进,新文件会在后台加载。这可以确保所需的行始终准备就绪r立即使用,每隔几分钟加载一个新文件不会导致太多IO。

    将这些内容放在jar/zip文件中。如果您使用正确的接口(类加载器或您自己的zip管理器),那么文件将保持打开状态,访问将相当有效。

    将这些内容放在jar/zip文件中。如果您使用正确的接口(类加载器或您自己的zip管理器)然后文件将保持打开状态,访问将相当有效。

    这些文本文件不是基于角色的特定对话吗?或者每个文件都有随机对话,用于所有角色,您可以在需要时选择一个特定的对话?每个文件都包含基于特定角色的特定内容的对话角色正在执行。对话是从文件中随机选择的。所有角色可以执行相同的特定任务,还是只有一个角色可以执行给定的任务,其余角色将执行其他任务。可能是1和2的混合。当出现新单词时,首先从2开始启动缓存,下次在执行文件之前先签入缓存。有些角色可以执行以下操作:同样的事情,但有不同的反应。文件是这样组织的[角色类型][动作谈论]。这些文本文件不是基于某个角色的特定对话吗?或者每个文件都有随机对话,用于所有角色,您可以在需要时选择一个特定的对话?每个文件都包含基于某个角色正在做的特定事情的对话。对话是从文件中随机选择的。是否都可以角色可以执行相同的特定任务,或者只有一个角色可以执行给定的任务,而其他角色可以执行其他任务。可能是1和2的混合。首先从2开始,随着新词的出现,开始缓存,下次在处理文件之前先签入缓存。有些角色可以执行相同的任务,但响应不同。文件的组织方式如下[角色类型][谈论动作]。RAM不会是问题。这也有道理。我可以这样做。RAM不会是问题。这也有道理。我可以这样做。