我想将一些String存储在一个文件中,然后再将其读回。问题是字符串可能是任何东西,例如它甚至可能是"Entry1","Entry2"
对于一个字段。因此,如果我只是检查逗号并相应地拆分字符串,它肯定会失败。
是否有任何内置的Java类可以处理这种情况?如果不是,我怎样才能在Java中创建一个简单的CSV解析器?
答案 0 :(得分:1)
您可能需要查看CSV的this规范。请记住,没有官方认可的规范。您也可以尝试使用this解析器 Apache Common library for CSV也有帮助。
如果您不知道分隔符,则无法执行此操作,因此您必须以某种方式查找。如果分隔符可以变化,那么您唯一的希望就是能够从已知数据的格式中推断出来。当Excel
导入CSV文件时,它允许用户选择分隔符,这也是您可以使用的解决方案。
答案 1 :(得分:1)
我建议使用openCSV:http://opencsv.sourceforge.net/
我已经将它用于许多需要CSV支持的Java项目,包括读写。它是如何从文档中写入CSV的简单示例:
CSVWriter writer = new CSVWriter(new FileWriter("yourfile.csv"), ',');
// feed in your array (or convert your data to an array)
String[] entries = "first,second,third".split(",");
writer.writeNext(entries);
writer.close();
假设您可以从数据中获取String[]
,就这么简单。
要处理条目中的逗号,您需要引用整个条目:
`Make,Take,Break", "Top,Right,Left,Bottom",
使用OpenCSV,您可以提供引号字符,只需在构造函数中传递它:
CSVWriter writer = new CSVWriter(new FileWriter("yourfile.csv"), ',', '"');
这应该照顾你列出的需求。