我正在为一个Java项目工作,该项目将锻炼信息存储在一个平面文件中。每个文件将包含一个练习(BenchPress.data)的信息,该练习保存时间(自纪元以来的毫秒数),重量和重复。
示例:
1258355921365:245:12
1258355921365:245:10
1258355921365:245:8
存储和检索此数据的最有效方法是什么?它将被绘制并搜索以限制练习到特定日期或日期范围。
我的想法是将最新信息写入文件顶部,而不是追加到最后。这样,当我从顶部开始阅读时,我将获得最新信息,这将与大多数搜索(假设)相匹配。
但不保证日期的顺序。用户可以进入今天的练习,然后进入并输入上周的练习,无论出于何种原因。我应该在保存时点击命中按日期订购所有信息吗?
我应该走一个完全不同的方向吗?我知道数据库是理想的,但这是一个小组项目,管理数据库安装和我们之间的数据同步都不是理想的。其他人没有数据库经验,这将使评分变得困难。
非常感谢您的建议或建议。
-John
答案 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定义文件描述格式,然后就可以了。