如何“禁用”使用 CSVParser / CSVStrategy (Apache Commons) 解析文件时的注释检测
在 Java 程序中,我需要解析 CSV 文件。那里没有什么特别不寻常的地方。 我使用的实现是 Apache Commons 的 CSVParser,女巫现在使用 CSVStrategy 作为定义 CSV 方言的参数。
问题是,我需要去掉在输入文件中查找注释的选项。输入文件应该没有注释,并且每个字符(当然 ;
除外)都应该保留并被认为是有意义的。特别是,标准的 #
字符不应该是注释。
这是我到目前为止使用的代码(如预期的那样,这会导致 #
出现问题):
fRead = new FileReader(someFilePath);
data = new CSVParser(fRead, new CSVStrategy(';', '"', '#')).getAllValues();
CSVStrategy 构造函数的第三个参数是 char
,因此它不能是 空
。
有趣的是 CSVStrategy 中存在静态字符 COMMENTS_DISABLED
和方法 isCommentingDisabled()
,但没有类似的设置器。
CSVParser 有一个构造函数,它仅使用读取器和分隔符作为参数,并且没有 CSVStrategy,但它已被弃用。所以我认为有一种方法可以使用 CSVStrategy 实现类似的功能?
In a Java program, I need to parse a CSV file. Nothing extremely unusual there.
The implementation I use is Apache Commons's CSVParser, witch now uses a CSVStrategy as parameter to define the CSV dialect.
The thing is, I need to get rid of the option to look for comments in the input file. The input file is supposed to have no comments, and every character (except ;
, of course) should be kept and be considered meaningful. Especially, the standard #
character should not be a comment.
Here is the code I use so far (which cause problems with #
, as expected) :
fRead = new FileReader(someFilePath);
data = new CSVParser(fRead, new CSVStrategy(';', '"', '#')).getAllValues();
The thrid argument of CSVStrategy's constructor is a char
, so it cannot be null
.
Something interesting is the presence of the static char COMMENTS_DISABLED
and method isCommentingDisabled()
in CSVStrategy, yet no setter for something similar.
There is a constructor of CSVParser which takes only the reader and a delimiter char as parameters, and no CSVStrategy, but it's deprecated. So I figure there is a way to achieve similar functionality with the CSVStrategy ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
通过快速查看源代码,似乎您可以像这样使用 CSVStrategy 构造函数:
By quickly looking at the source code, it seems that you can use the CSVStrategy constructor like this :