2017-10-06 123 views
0

我试图使用Java和A pache commons CSV库来访问CSV文件的数据。 我被困在一个问题。 问题是: “要显示特定行的数据,如果”名称“标题等于”rahul“,当我运行代码时,没有任何内容被打印出来。使用java和apache commons在CSV文件中搜索“Item”

在exportdata.csv文件中的数据是:

  • 名称,食品,手机
  • 拉胡尔,大米,9876416884
  • RAM,蛋,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")); 
     }   
    } 
} 

我认为该错误是在线路如果(STR ==“拉胡”),我已检查该程序不是处理该STR和“拉胡”相同时STR =“拉胡”在的第一次迭代中用于循环

+0

我认为这可以帮助https://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java/513839#513839 – shadowsheep

回答

1

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

+0

Thanxxxx很多......“Dbug” –

+0

我只是试着给你的解决方案....它工作得很好.... !!! Thanxxx再一次.... !!! –

+0

欢迎,高兴地帮助 – DBug

-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(); 
    } 

} 

希望这会帮助你。

+0

Thanxxx ...很多.... !!!我只是想尝试一下,然后......让我知道如果我面临任何困难。 –