附加文件是一個CSV文件。 編寫一個Java程序來讀取該文件中的數據,並將每個服務填充到單獨的地圖中並打印出來。通過在列表中傳遞列名作爲鍵來讀取java中的CSV文件
CSV File
--------
CompanyName location foundedby profit noofyears
HCL chennai shivnadar 3.2 8
XYZ chennai XCV 9 10
在該如何通過列名在兩個單獨的映射鍵(一個地圖爲HCL
和另一個地圖爲XYZ
)
每一行都有單獨的映射。
我的代碼是
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.HashMap;
import java.util.Map;
import java.util.StringTokenizer;
public class ReadServicesExercise {
public static void main(String[] args) {
String file = "D://ReadCsv.csv";
try{
BufferedReader br = new BufferedReader(new FileReader(file));
Map<Integer,String> values = new HashMap<Integer,String>();
String line = "";
StringTokenizer tokens = null;
int lineNo = 0;
int tokenNo = 0;
//reading the csv file line by line
while ((line = br.readLine()) != null) {
//increment the lineNo after every line is being read
lineNo++;
System.out.println("Reading Line No. : "+lineNo);
tokens = new StringTokenizer(line, ",");
while (tokens.hasMoreTokens()) {
//increment the token no!
tokenNo++;
//Print csv values
System.out.print(tokens.nextToken() + " ");
//Need to write the values to the hashmap
values.put(arg0, arg1);
}
System.out.println();
//reset token number
tokenNo = 0;
}
}
catch(Exception ex){
System.err.println("CSV file not found : " + ex);
}
}
}
但它打印的每一行,但我想的第一行的列名作爲鍵傳遞和相應的值應顯示爲每個公司的名字。
我會建議使用庫解析CSV(如supercsv),你也可以有報價並逃脫(RFC-4180)。 – RobAu
這對我來說很難理解你到底想要做什麼,你的程序現在在做什麼。您在這裏發佈的這段代碼不會編譯爲:line.value(arg0,arg1);什麼是arg0和arg1?第二件事是你的CSV用空格分隔,但你用逗號分隔。 – Tarmo