编辑CSV文件(设计实现)

时间:2015-10-23 17:12:32

标签: java csv opencsv

我开始设计一个程序,根据类似的字符串及其身份找到并保存到主CSV / Excel文件中,自动完成查找和识别字符串的过程。

现在我想正确设计它,以便我在以后实施CSV / Excel读写部分时不会遇到问题。

我可能会使用OpenCSV来编写和读取文件,所以我的问题更多的是关于如何编辑文件。

上次我处理编辑CSV文件时,我不得不将每行重写为新文件或现有文件,而不是仅编辑特定行。这是唯一的方法吗?

前 - 如果我的csv类似

1,2,3  and i wanted to change   1,2,3
4,5,6   4,5,6 to a,b,c          a,b,c
7,8,9                           7,8,9

唯一的方法是读取每一行,如果需要改变它,然后再写出来?没有办法只编辑中间线?

我之所以这样说,是因为我计划通过GUI进行大量自定义用户更改,并且每次都将更改写入文件可能会非常糟糕?

我认为保存数组中的每一行或单元格并编辑数组将是一种更有效的解决方案。

编辑CSV文件时可以提供的任何技巧或建议吗?

旁注:我可能会在Java中这样做,因为我最熟悉用Swing构建GUI,但我很乐意用另一种语言进行尝试。

1 个答案:

答案 0 :(得分:1)

首先将问题分解为其组件,因为它过于复杂。

问题的根源在于您有一个包含记录的文件,您正在编写一个gui以允许用户进行编辑。

为了提高性能,您希望读取和写入同一文件,尝试只读取或写入单个记录。

相关文件采用csv格式。

所以第一个你感冒了,所以没有必要过去。

我要说的第二部分与许多感叹号没有关系。原因是最糟糕的情况 - 你编程崩溃。此时你已经破坏了你的原件。如果您知道记录的数量很小,那么将整个内容读入内存(比如作为字符串列表)并将各个字符串解析为其记录,当用户完成后,他们会保存您将其写入不同的文件一旦完成,您删除原始文件并将第二个文件重命名为第一个文件。这样,如果您遇到最糟糕的情况,您可以保持原始文件的完整性,也可以使用不同的名称进行更改。

如果一次存在太多内存,则RandomAccessFile允许对同一文件进行读写操作。但 我建议你在开始时复制文件(使用一些编辑使用的.tmp或.swp)并使用它,因为它仍然保护你免受可怕的崩溃。

之后就是如何处理CSV数据。如果是简单文本,则可以使用Java String拆分方法。如果它更复杂,那么openCSV有CSVParser方法,它会将String解析为一个字符串数组。还有一个CSVParserBuilder简化了构造解析器的过程。

希望有所帮助。

:)