java - 编辑 CSV 文件(设计实现)

标签 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,但我愿意尝试使用其他语言。

最佳答案

首先将问题分解为多个组成部分,因为您将问题过于复杂化了。

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

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

相关文件为 csv 格式。

所以第一个你已经冷了,所以没有必要再回顾一遍。

我想说的第二部分不要有很多感叹号。原因是最坏的情况——程序崩溃。此时你已经损坏了你的原件。如果您知道记录数量很小,则将整个内容读入内存(例如字符串列表)并将各个字符串解析到其记录中,当用户完成后,他们会保存您将其写入不同的文件中完成后,您删除原始文件并将第二个文件重命名为第一个文件。这样,如果您遇到最坏的情况,您要么保持原始文件完好无损,要么更改只是以不同的名称存在。

如果一次内存太多,无法容纳,则有 RandomAccessFile允许读取和写入同一文件。但 我建议您在开始时制作文件的副本(使用某些编辑器使用的 .tmp 或 .swp)并使用它,因为它仍然可以保护您免受可怕的崩溃的影响。

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

希望有帮助。

:)

关于java - 编辑 CSV 文件(设计实现),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33307972/

相关文章:

java - 为什么 .bat 文件会跳行并跳到末尾?

python - Pandas read_csv : Columns are being imported as rows

python - 将日期解析为从 csv 到 pandas 的字符串

java - java中的csv文件的电子邮件验证

java - 如何确定字符来源是否来自键盘(读取文件内容时)

java - Log4j - 如何仅将消息日志写入文件而无需其他详细信息

java - 用高效的加入和满足操作来代表反链

java - 如何验证页面上的所有元素?

c# - 将 DataTable 转换为 CSV 流

java - 使用打开的 CSV Writer 从 java 中的 bean 对象生成 txt 文件时添加了额外的回车符