使用java和apache commons CSV库在CSV文件中搜索“Item”

时间:2017-10-06 19:39:31

标签: java csv apache-commons

我正在尝试使用 Java 和A pache commons CSV 库来访问CSV文件的数据。 我陷入了困境。 问题是: “如果”名称“标题等于”rahul“,则显示特定行的数据。当我运行代码时,没有任何内容打印出来。”

exportdata.csv文件中的数据是:

  • 名称,食品,电话
  • rahul,Rice,9876416884
  • 冲压,鸡蛋,8437123456
  • 罗希特夏尔,汉堡,9814125755
  • 阿米特,鸡,8568934464

我的代码是:

public class csvexample {

 public void readfile()
 {
    FileResource fr=new FileResource();
    CSVParser parser=fr.getCSVParser();
    for(CSVRecord record : parser)
    {

        String str=record.get("Name");
        System.out.println(str);

        if(str=="rahul")
        {
        System.out.print(record.get("Name") + "    ");
        System.out.print(record.get("Phone") + "    ");
        System.out.println(record.get("Food"));
        }          
    }
}

我认为错误在 if(str ==“rahul”)行中,我检查过str =“rahul时程序没有处理str和”rahul“ “在 for loop 的第一次迭代中。

2 个答案:

答案 0 :(得分:1)

因为它们是2个不同的String对象,即使它们具有相同的字符。试试if ("rahul".equals(str))

答案 1 :(得分:-1)

不确定,但你可以试试这个:

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

 public void readFile() {

    String csvFile = "exportdata.csv";
    String line = "";
    String cvsSplitBy = ",";

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

        while ((line = br.readLine()) != null) {

            // use comma as separator
            String[] str = line.split(cvsSplitBy);
            String name = str[0];

            if(name.equals("rahul")){
                System.out.print("Name: " + str[0]);
                System.out.print(" Food: " + str[1]);
                System.out.println(" Phone: " + str[2]);
            }

        }

    } catch (IOException e) {
        e.printStackTrace();
    }

}

希望这会对你有所帮助。