首先,在使问题过于复杂的过程中,将问题分解为各个部分。
问题的根源在于,您有一个包含记录的文件,您正在为其编写gui以允许用户进行编辑。
为了提高性能,您希望读取和写入同一文件,并尝试仅读取或写入一条记录。
有问题的文件为csv格式。
因此,您第一个患上感冒,因此无需克服。
我要说的第二部分与许多感叹号无关。这样做的原因是最坏的情况-
程序崩溃。此时,您已损坏了原件。如果您知道记录的数量很少,则将整个内容读入内存(例如字符串列表),然后将各个字符串解析为它们的记录,并在用户完成操作后将它们保存下来,将其写入另一个文件中完成后,您将删除原始文件并将第二个文件重命名为第一个文件。这样,如果遇到最坏的情况,您将拥有完整的原始文件,或者更改的名称不同。
如果一次无法容纳太多内存,则可以使用RandomAccessFile来读写同一文件。但是我建议您在开始时复制该文件(使用某些编辑器使用的.tmp或.swp)并对其进行处理,因为它仍然可以保护您免受可怕的崩溃的影响。
之后,这就是您处理CSV数据的方式。如果是简单文本,则可以使用Java String
split方法。如果更复杂,则openCSV具有CSVParser方法,该方法将为您将String解析为字符串数组。还有一个CSVParserBuilder,它简化了解析器的构造。
希望能有所帮助。
:)



