使用csvreader在java中无法正确读取CSV

时间:2014-02-03 10:02:38

标签: java csv

这是我的代码。我无法将其写回csv。我已经发现问题在于if循环中的头匹配。正确读取值时,如果标头匹配,则if循环未得到满足。任何帮助深表感谢。感谢。

public class FactsChecker {
public static void main(String[] args) {

    run();
}


static void run()
{
    Map <String,String> csvMap = new HashMap<String,String>();
    String csvPath = "resource/Sample.csv";
    String outputPath = "resource/Output.csv";
    String[] headers;
    try{
    CsvReader csvreader = new CsvReader("resource/Sample.csv");
    csvreader.readHeaders();
    headers = csvreader.getHeaders();
    String[] values;
    String key = null;
    String value = null;
    while (csvreader.readRecord()){`

        values = csvreader.getValues();
        System.out.println(headers[0]);

        for (int i = 0; i < headers.length; i++) {
            if (headers[i].equals("FCT_NAME")) {
                key = values[i];
            }
            if (headers[i].equals("FCT_TYPE")) {
                value = values[i];
            }
        }




        csvMap.put(key,value);

    }

    for (Map.Entry<String, String> entry : csvMap.entrySet())
    {
        System.out.println(entry.getKey() + "/" + entry.getValue());
    }

Map<String,Entry> entryMap= new HashMap<String, Entry>();
for (String factKey:csvMap.keySet()){
    Entry entry = new Entry();
    entry.setFactName(factKey);
    String factType = csvMap.get(factKey);
    System.out.println(factKey);
    entry.setFactType(factType);
    entryMap.put(factKey, entry);

}

    CsvWriter writer = new CsvWriter(outputPath);
    for(String key1 : entryMap.keySet()){
        Entry entry = entryMap.get(key1);
        writer.writeRecord(new String[]{entry.getFactName(),entry.getFactType()});
    }
    writer.close();

}

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

}
}

1 个答案:

答案 0 :(得分:0)

尝试使用contains而不是equals,以防有尾随或前导空格