编辑 CSV 文件(设计实现)
Editing CSV Files (Design Implementation)
我开始设计一个程序,该程序将根据已找到并保存到主 CSV/Excel 文件中的相似字符串及其标识,自动执行正确查找和识别字符串的过程。
现在我想适当地设计它,这样我以后在实现 CSV/Excel 读写部分时就不会 运行 遇到问题。
我可能会使用 OpenCSV 来写入和读取文件,所以我的问题更多是关于如何编辑文件。
上次我处理编辑 CSV 文件时,我不得不将每一行重写到一个新的或现有的文件中,而不是只编辑特定的行。这是唯一的方法吗?
Ex - 如果我的 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字符串拆分方法。如果它更复杂,那么 openCSV 有 CSVParser method that will parse the String into an array of strings for you. There is also a CSVParserBuilder 可以简化解析器的构造。
希望对您有所帮助。
:)
我开始设计一个程序,该程序将根据已找到并保存到主 CSV/Excel 文件中的相似字符串及其标识,自动执行正确查找和识别字符串的过程。
现在我想适当地设计它,这样我以后在实现 CSV/Excel 读写部分时就不会 运行 遇到问题。
我可能会使用 OpenCSV 来写入和读取文件,所以我的问题更多是关于如何编辑文件。
上次我处理编辑 CSV 文件时,我不得不将每一行重写到一个新的或现有的文件中,而不是只编辑特定的行。这是唯一的方法吗?
Ex - 如果我的 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字符串拆分方法。如果它更复杂,那么 openCSV 有 CSVParser method that will parse the String into an array of strings for you. There is also a CSVParserBuilder 可以简化解析器的构造。
希望对您有所帮助。
:)