0

我正在开发一个将锻炼信息存储在平面文件中的类的 Java 项目。每个文件将包含一个练习 (BenchPress.data) 的信息,其中包含时间(自纪元以来的毫秒数)、重量和重复次数。

例子:

1258355921365:245:12

1258355921365:245:10

1258355921365:245:8

存储和检索这些数据的最有效方法是什么?它将被绘制和搜索,以将练习限制在特定日期或日期范围内。

我的想法是将最新信息写入文件顶部,而不是在末尾附加。这样,当我从顶部开始阅读时,我将获得最新的信息,这些信息将匹配大多数搜索(假设)。

但是,不能保证日期的顺序。无论出于何种原因,用户都可以输入今天的练习,然后进入并输入上周的练习。我应该在保存后按日期订购所有信息吗?

我应该走向完全不同的方向吗?我知道数据库是理想的,但这是一个小组项目,管理数据库安装和我们之间的数据同步并不理想。其他人没有数据库经验,这会使评分变得困难。

所以感谢您的任何意见或建议。

-约翰

4

5 回答 5

6

不要把事情复杂化。除非您正在处理数百万条记录,否则您可以将整个内容读入内存并以您喜欢的任何方式对其进行排序。并且总是在最后添加记录,这样您就不太可能损坏您的文件。

于 2009-11-20T22:25:52.510 回答
3

对于简单的项目,使用像JavaDB / Apache Derby这样的嵌入式可能是一个好主意。数据库的配置绝对是最少的,在您的情况下,您可能最多只需要 2 个表(用户和锻炼)。将数据导出到文件对于团队成员之间的同步也相当简单。

正如 yu_sha 指出的那样,除非期望有一个大数据集(在 PC 上运行,> 50000),否则您可以只使用该文件并将所有内容读入内存。

于 2009-11-20T23:09:34.230 回答
1

通过读取每一行BufferedReader并使用StringTokenizer. 查看数据,我可能会在 aList中存储一个字段数组,可以根据您的喜好对其进行迭代和排序。

于 2009-11-20T22:25:00.953 回答
0

如果您必须以这种格式存储文件,您可能最好在启动时将整个文件读入内存并将其存储在 TreeMap 或其他排序的、可搜索的地图中。然后,您可以使用 TreeMap 的便捷方法,例如ceilingKey或类似的 floorKey 来查找某些日期/时间附近的匹配项。

于 2009-11-20T22:26:44.113 回答
0

使用flatworm,一个允许解析和创建平面文件的 Java 库。用一个简单的 XML 定义文件描述格式,然后就可以了。

于 2009-11-20T23:16:43.833 回答