维护基于 txt 的数据库文件的最简单方法是什么,该文件允许程序在执行期间写入新条目或编辑现有条目。
具体来说,程序必须能够在登录时存储客户端、IP 和端口,并在客户端注销时相应地删除,而不使用链表等“内部”方法。
编辑:首先感谢建议,但是我忘记提及的文件中有一个限制,该文件必须为 .txt 格式。
确切的格式是
用户名 IP 地址 端口号
爱丽丝 122.33.44.23 1045
鲍勃 121.23.12.34 1078
哪些不同的字段必须用 a 分隔
维护基于 txt 的数据库文件的最简单方法是什么,该文件允许程序在执行期间写入新条目或编辑现有条目。
具体来说,程序必须能够在登录时存储客户端、IP 和端口,并在客户端注销时相应地删除,而不使用链表等“内部”方法。
编辑:首先感谢建议,但是我忘记提及的文件中有一个限制,该文件必须为 .txt 格式。
确切的格式是
用户名 IP 地址 端口号
爱丽丝 122.33.44.23 1045
鲍勃 121.23.12.34 1078
哪些不同的字段必须用 a 分隔
您可能想查看JSON、Yaml等数据序列化方法或SQLite等轻量级(基于文件但非人类可读的)数据库。
正如其他几位海报所建议的那样,安装数据库将为您带来某些东西,例如事务安全性和扩展存储内容的可能性(目前,您只需要 IP/端口,但也许稍后您会存储更多东西,也许更永久?)
但是,如果您的要求仍然像您所说的那样简单,那么我将有争议地建议使用 SQL 数据库不是最简单的解决方案(尽管,正如我所说,对于某些要求,数据库确实可以购买你某些事情)。
一个非常简单的解决方案是简单地创建一个目录,每次客户端登录时,您都会在其中创建一个文件,该文件的名称编码您想要的信息(或识别信息的哈希,并在文件中存储额外信息)。然后,当客户端注销时,您删除该文件。您需要注意的问题包括当您的应用程序异常退出时会发生什么,如果您有超过几千个客户端,则会在多个目录中拆分(如果您的文件太多,Windows 似乎会变得很笨)一个目录,尽管原则上您应该能够存储任意数量的文件),并管理文件系统“问题”(病毒检查程序正在访问文件,就像您需要删除...)。
这个简单的解决方案实际上并不像听起来那么糟糕:归档系统实际上是为了有效地访问和索引事物而设计的,就像数据库一样。
最简单的方法是将其保存在某种数据库中。您尚未指定文件格式的要求,但显而易见的选择是 CSV 文本格式。
H2 数据库尤其支持CSV 表。
我也会使用具有将数据存储在文本文件中的模式的 hsql
db 文本文件仍然不是一个简单的 txt 文件,它包含一些带有数据的 sql 语句。http://hsqldb.org/web/hsqlDocsFrame.html
示例 TEXT 数据库文件:
INSERT INTO YOUR_TABLE VALUES('CLIENT1','xyz', .....)
INSERT INTO YOUR_TABLE VALUES('CLIENT2','xyz', .....)
我使用JAXB将中等大小的数据结构(例如列表)序列化为 XML 文件并返回。好处:
当然,它不能替代任何真实的数据库。例如,数据中的任何更改都会迫使您重写整个文件——但对于小文件来说,这并不重要。有时需要的是简单性。
它不是 Java,但 MySQL 支持 CSV 表类型。 http://dev.mysql.com/doc/refman/5.1/en/csv-storage-engine.html
MySQL 会处理所有困难的事情,例如锁定和多访问,但会给您留下一个无需 MySQL 即可直接读取的文件。
我建议JavaDB。许多功能,例如可用的嵌入式支持和移动支持。