繁体   English   中英

文件处理

[英]File Processing

我正在写一个游戏,用户可以在其中创建自己的关卡并删除它们。 唯一的麻烦是我希望文件的名称保存为level1,level2,level3等,而无需询问level的用户名。

保存具有5级名称的游戏时,可能已经存在任何具有该名称的先前关卡。 有什么办法可以避免这种问题。 我的意思是在保存我应该保存的名字之前应该已经知道...

谢谢...

您可以使用java.io.File API提供的java.io.File ,例如File#exists() 它返回一个boolean 如果为true ,那么您可以追加到文件,或创建另一个具有不同文件名的文件名(也许是后缀?)。 您可以使用FileOutputStream的另一个构造函数将第二个布尔参数(设置为true追加到任何现有文件中。 您也可以只使用此构造函数而无需检查文件是否存在,如果文件不存在,它将仅创建一个新文件;如果文件存在,则将仅追加一个文件。

如果已经存在第5级并且用户尝试保存第5级,预期的行为是什么? 旧的level5文件是否应该被覆盖? 如果没有,还应该发生什么? 新文件应该以其他名称保存吗? 以后您如何找到这个关卡? 如果第5级有多个level5文件,那么您的游戏如何知道该选择哪个文件?

当然,您总是可以创建一个UUID(实际上或多或少保证是唯一的),创建一个以该UUID命名的目录,并将文件存储为该目录中的level1至level5。 下次用户打开级别编辑器时,您将创建一个新的UUID,从而避免了任何命名冲突。

或者,您可以将其转过来。 创建一个目录名level1,level2等,并在每个目录中使用包含UUID的文件名存储文件。 这样,游戏始终可以轻松地通过进入level5目录并查看在那里找到的所有文件来呈现所有5级级别的列表。

问题是:在选择一个级别时,您将如何向用户展示这些级别? 由于您没有名称,因此您几乎不想向用户显示UUID。 所以我想知道让用户名级别或级别组(目录)是否更好。

看来您的问题不是如何,而是什么 重新考虑您的目标(所需的功能要求)。

如果用户不能为创建的级别提供唯一的(有意义的)名称,那么他将如何引用该级别(例如,如果他想对其进行编辑)?

我认为您应该为每个级别保留其他数据,例如:名称(唯一),作者,创建日期,最后修改日期等。当用户保存(创建或编辑)某个级别时,应警告他,以防万一提供了名称存在,应在“取消” /“覆盖” /“ try_another_name”之间进行选择。 如果用户不是作者,则可能应禁止该用户覆盖某个级别。

存储和处理上述数据的最佳(自然)方法是使用数据库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM