gpt4 book ai didi

java - Java 中的 CSV 行读取器

转载 作者:行者123 更新时间:2023-11-30 09:56:27 28 4
gpt4 key购买 nike

我是初级 Java 程序员。我正在处理 CSV 文件。我有一个包含行和列的文件,如下所示:

     col1   col2   col3
row1
row2
row3

我读取了这个文件并将其存储在一个字符串中。我用换行符分解字符串以获得每一行。我有一个具有一些行名称的变量 ArrayList。我如何比较它只返回特定行?

最佳答案

正确解析 CSV 文件比乍看起来更棘手,您至少需要:

  • 尊重原文编码
  • 确保您可以导入转义分隔符,即:23,10/02/2010,"hello, world",34.5
  • 根据文件区域应用正确的日期格式和小数点格式
  • 正确对待引号

如果这是一项快速任务,我建议使用现有的库,至少有两个用于 Java 的开源 CSV 库具有非常相似的 API:

  1. Java CSV Library
  2. OpenCSV

我已经尝试从 OpenCSV 开始,但由于我有一个 600MB 的 CSV 文件,所以在逐行评估文件时它抛出了 OutOfMemory 异常。显然当前库中存在内存泄漏。

我没有时间进行调试,所以我只是切换到 Java CSV,因为它们在基本操作方面具有惊人相似的 API,而且它的工作原理非常棒。

Java CSV 允许您通过索引或列名访问列(如果文件中有标题)。

更新

使用 Java CSV Lib,你必须按照这些行做一些事情来访问单独的行(quick'n'dirty,可能无法编译):

import com.csvreader.CsvReader;

class Parser {

public static void main (String [] args) throws Throwable {

CsvReader reader = new CsvReader("input file name.csv",
',' /* delimiter */ );

while (reader.readRecord()) {

// full row, you can use regex to find
// any rows you specifically want
String row = reader.getRawRecord();

// get value of the first field
String col = reader.get(0);

// gets array of fields
String[] cols[] = reader.getValues();
}

reader.close();

}

}

关于java - Java 中的 CSV 行读取器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2346713/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com