如何知道与CSVReader类读取的行相关联的文件中的实际行号?我可以计算行数,假设这个类读取的每一行都是文件中的新行。问题是CSV文件中可能有换行符。例如,有3个“逻辑”行并不意味着我们有3个文件中的“物理”行。我有一个错误报告功能,因为它几乎总是报告错误的行号。
任何想法如何确定文件上的实际行号?谢谢!
您写下您需要用于错误报告的行号
CsvException类有一个<code>getLineNumber
当然,这仅在您有异常时有效。
如果您愿意将开源API切换到Super CSV(区分物理行和CSV行),那么您将有以下3种方法可用:
/**
* Gets the current position in the file.
* The first line of the file is line number 1.
*
* @since 1.0
*/
int getLineNumber();
/**
* Returns the untokenized CSV row that was just read
* (which can potentially span multiple lines in the file).
*
* @return the untokenized CSV row that was just read
* @since 2.0.0
*/
String getUntokenizedRow();
/**
* Gets the current row number (i.e. the number of CSV records - including the
* header - that have been read). This differs from the lineNumber, which is
* the number of real lines that have been read in the file.
* The first row is row 1 (which is typically the header row).
*
* @since 2.0.0
*/
int getRowNumber();
如果您愿意修改源代码,则可以添加一个计数器
private String getNextLine()
在以下两个位置递增计数器:
br.readLine();
,并将计数器公开为公共属性。
如果您不希望修改源代码,对于返回的每一行CSV,您可以将自己的计数器增加1 CSV行
中换行符的总和(大概OpenCSV正在将包括换行符在内的列返回到您的代码中,尽管我没有测试过这种行为)。如果您的列A有一个换行符,列B有两个换行符,实际文件应该如下所示:
“这是
细胞A”、“和
细胞
B“
产生3个换行符(或\r\n序列,取决于您的平台),加上由OpenCSV返回的1行。将你的计数器加4。
opencsv一个简单的CSV解析Java包。它封装了CSV格式文件的输出和读入,可以自动处理CSV格式中的特殊字符。
我对java librairie OpenCSV有问题。我没有读完我的CSV文件的所有行,我只读了第二行,我不知道为什么... 我的CSV文件: 我使用OpenCSV创建一个android列表,只有“Julie”“Julie”这一行被添加了3次...
我有这样的csv列表: 当像这样使用开放解析时: 我得到以下结果: 第 1 行 abcdefghi 第2行 jkl;mno;p; 第3行 qrs;tuv;wxy; 第4行 z;zz;zzz; 如何让它像它应该的那样工作,即每行中的值在数组中分开?
我有一个CSV文件,它将在引号内有分隔符或未关闭的引号,我如何使CSVReader忽略引号和引号内的分隔符。例如: 这是文件的内容。 下面的程序读取csv文件。 我收到了这样的订单。 之后报价发生了什么 编辑: 开放电脑依赖 com.开放电脑 3.4
我用的是opencsv 2.3 for Java。我像这样设置我的CSVReader对象来处理 在我的文件中,我有以下几行: 数据从SQL Server表导出到CSV文件。 OpenCSV正确识别第一行的三列,但第二行只有两列。 如何配置 OpenCSV 以识别第二行的三列数据?
我正在尝试使用OpenCsv从CSV解析即时,如下所示: 我知道OpenCsv应该支持< code>java.time。 但是当我试图使用它的时候,我得到了下面的异常: 分析CSV行时出错:8。 ... 原因:java.time.format。DateTimeParseException:无法解析文本“2022-04-21 00:00:00”:无法从临时加速器获取即时数据:{HourOfAmPm=