如何在不知道使用java的头文件的情况下读取csv文件?

时间:2011-06-23 12:07:19

标签: java csv

我必须在java中读取CSV文件,我用谷歌搜索它,但我得到了使用标题阅读的方式;但我没有列标题和文件中可用列数的信息。 在这种情况下,我如何阅读CSV文件。

由于

3 个答案:

答案 0 :(得分:3)

您可以假设每一行都是String类,并将所有内容读入二维数组。之后,您可以尝试将字符串解析为适当的格式。

但如果您不知道行数据类型,这只是猜测。

答案 1 :(得分:2)

如果您不知道列代表什么,则只能将其作为文本读取,例如:

final BufferedReader br = new BufferedReader(new FileReader(file));
String line = null;
while ((line = br.readLine()) != null) {

    final String[] lineValues = line.split(COLUMN_DELIMITER);
}

这样,所有列值都将位于这些lineValues数组中(column1将为lineValues [0]等。)。

答案 2 :(得分:2)

Casper datasets可以做到这一点是几行,并将返回一个CDataRowSet,其工作方式与ResultSet类似。它可以从文件中读取标头并返回所有字符串,例如:

CBuilder builder = new CBuildFromFile(new File("people.csv"));
CDataCacheContainer container = new CDataCacheContainer(builder);
CDataRowSet cdrs = container.getAll();

或者它也可以将返回的结果缩小到尽可能小的数据类型而不会失去保真度。这样做它还可以处理缺少的整数和双精度(否则结果数据类型将保持为String),例如:

CBuilder builder = new CBuildNarrowedFile(new File("people.csv")).setConvertMissing(true);
CDataCacheContainer container = new CDataCacheContainer(builder);
CDataRowSet cdrs = container.getAll();