java - 选择第二列(FileReader)

标签 java csv multiple-columns bufferedreader filereader

我正在循环 csv。我有两个问题:

1)我按名称选择第二列,例如

if(tab[1].equals("Col2")

我不想输入列的名称。我只想选择第二列。

2)如何跳过第一行(标题)

以下是循环 csv 的代码示例:

String csvFile = "C:\\test.csv";
BufferedReader br = null;
String line = "";
String cvsSplitBy = ";";

try{
    br = new BufferedReader(new FileReader(csvFile));

    while ((line = br.readLine()) != null) {
        String[] tab=line.split(cvsSplitBy);      

        int tmp;
        if(tab[1].equals("Col2")){                

            tmp = Integer.parseInt(tab[2]);

                for(int i=0;i<tmp;i++){  
                   // TO DO
                }
        }
    }
}

最佳答案

最好使用 CSVReader 为此,它提供了大量用于处理 csv 文件的 API。当然,这是一个完整的工作代码,没有异常处理。

String csvFile = "C:\\test.csv";
CSVReader reader;
String[] nextRow;
char cvsSplitBy = ';';

try {

    //Last argument will determine how many lines to skip. 1 means skip header
    reader = new CSVReader(new FileReader(csvFile), cvsSplitBy, CSVParser.DEFAULT_QUOTE_CHARACTER, 1);

    while ((nextRow = reader.readNext()) != null) {

        if(nextRow.length > 2){
            //nextRow[1] will always give second column value
            int tmp = Integer.parseInt(nextRow[1]);
            for (int i = 0; i < tmp; i++) {
                // TO DO
            }
        }
    }
} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

关于java - 选择第二列(FileReader),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41264288/

相关文章:

Java - 监听器/观察者 VS 子类保护方法

java - 将常规 for 循环重构为增强型 for 循环

java - 在 Java 中读取 csv

CakePHP 与多个列有很多关系

sql - 在sql Server中从单列转换为多列

java - session 结束后可以安全地存储对实体 Bean 的引用吗?

java - 制作帮助菜单

mysql - 将具有空值的 csv 文件导入 phpmyadmin

matlab - 从 textread 更改为 textscan MATLAB

php - 如果多个复选框在 php 中是动态的,如何存储它们