2016-03-04 59 views
0

我正在开发一个使用LibGDX的应用程序。LibGDX:如何保存大量的数据?

我想节省很多句子,每个句子都有一个索引和创建日期。

用户应该能够找到或选择特定的句子。

应该有已经在应用程序中创建的句子(例如在资产文件夹中),用户还应该能够创建自己的句子并保存它们。

我是这个主题的新手,我不知道如何实现这个想法。 我在研究期间发现了一些东西,但我很困惑,因为有很多信息,我不知道我需要哪一个。

我应该使用JSON文件,csv文件,SQL数据库还是其他? 何时,那么如何与LibGDX做到这一点?

如果你能给我一些关于这个主题或建议的信息,我会很高兴!

+0

一定要提供一个例子,你已经尝试了什么,或者至少你通过研究了解了什么。 – jkdba

+0

JSON会是最简单的,因为LibGDX内置了对它的支持,你可以在桌面版本中测试它。如果您的句子数量巨大,SQLite会更好,这样您就不需要将整个集合加载到内存中。但是实现起来会比较困难,因为您需要编写一些接口和Android特定的代码。 – Tenfour04

+0

@JohnK到目前为止,我还没有尝试过任何东西,因为我不确定要开始什么。但我已经看过我在我的问题中提到的事情。 – red1575

回答

2

首选项是要走的路,除非你正在谈论成千上万的用户句子。这也取决于可扩展性,如果你只是想添加字符串,这就完成了这项工作。如果你需要查找特定的字符串,你可能需要加载它们。首选项存储在本地,因此每个模块都可以通过Gdx界面轻松访问它。这是你如何使用Preferences

Preferences preferences = Gdx.app.getPreferences("filename");  
    preferences.putString(Key<String>, Value); 
    preferences.flush(); 

我们能够继续增加,你需要增加每个你把喜好的字符串时的关键字符串。你也可以在偏好中做到这一点。

int stringCount = preferences.getInteger("string_count"); // Get current string count 
    preferences.putInteger("string_counr", stringCount++); // Increment stringCount and put it back in preferences 
    preferences.putString("userstring_" + stringCount, someString); // Create string using incremented stringCount. 
    preferences.flush(); //Store data 

您可以通过使用字符串数访问字符串。或者你可以在运行时加载它们。根据您的需要,您还可以将确切的字符串存储为密钥,但如果您不知道字符串,则很难再检索它们。

int stringCount = preferences.getInteger("string_count"); 
    List<String> userStrings = new ArrayList<String>(); 
    for (int i = 1; i <= stringCount; i++) 
    { 
     userStrings.add(preferences.getString("userstring_" + stringCount); 
    } 

的字符串存储在Windows上的users/username/.prefs/filename

我已经存储了几百场为喜好没有任何问题。这不是flush()上最快的,但你可以存储所有句子并批量刷新它们。如果您的需求不是太苛刻,偏好很容易做到。如果你寻找更多的可扩展选项,那么你应该使用JSON,XML,一种脚本语言,或者为它编写自己的读写器。除非你想将用户和其他数据链接到这些句子,否则数据库会过度杀伤。

+0

谢谢你的回答,我有一个问题:例如,我想让所有的句子按日期排序或者按照长度排序,或者只得到最喜欢的句子等等。你认为这会更好吗?为此使用数据库? – red1575

+0

由于你增加了每个新句子的时间已经排序。您可以将日期存储到。当你将它们存储在一个数据结构中时,你可以根据长度,字母或其他来排序。如果你真的需要一个日期,你总是可以将前缀中的日期条目与日期和句子之间的链接作为链接。但是,如果你想创建很多这些链接,最终数据库将会更加有益。 – Madmenyo

+0

Allright,ty:D – red1575