Java:从文件中存储/检索锻炼信息的最有效方法?

时间:2009-11-20 22:20:10

标签: java file store flat

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

示例:

1258355921365:245:12

1258355921365:245:10

1258355921365:245:8

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

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

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

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

非常感谢您的建议或建议。

-John

5 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:3)

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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