Ich muss csv-Datei analysieren. Anzahl der Spalten wäre variabel. Ich habe folgenden Code für feste Spalten geschrieben. Ich habe csvtobean und MappingStrategy API für die Analyse verwendet.Wie schreibe ich Java CSV-Parser mit opencsv
Bitte helfen Sie mir, wie ich Mappings dynamisch erstellen kann.
public class OpencsvExecutor2 {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
CsvToBean csv = new CsvToBean();
String csvFilename="C:\\Users\\ersvvwa\\Desktop\\taks\\supercsv\\20160511-0750--MaS_GsmrRel\\20160511-0750--MaS_GsmrRel.txt";
CSVReader csvReader = null;
List objList=new ArrayList<DataBean>();
try {
FileInputStream fis = new FileInputStream(csvFilename);
BufferedReader myInput = new BufferedReader(new InputStreamReader(fis));
csvReader = new CSVReader(new InputStreamReader(new FileInputStream(csvFilename), "UTF-8"), ' ', '\'', 1);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
csvReader.getRecordsRead();
//Set column mapping strategy
List<DataBean> list = csv.parse(setColumMapping(csvReader), csvReader);
for (Object object : list) {
DataBean obj = (DataBean) object;
// System.out.println(obj.Col1);
objList.add(obj);
}
csvReader.close();
System.out.println("list size "+list.size());
System.out.println("objList size "+objList.size());
String outFile="C:\\Users\\ersvvwa\\Desktop\\taks\\supercsv\\20160511-0750--MaS_GsmrRel\\20160511-0750--MaS_GsmrRel.csv";
try {
CSVWriter csvWriter = null;
csvWriter = new CSVWriter(new FileWriter(outFile),CSVWriter.DEFAULT_SEPARATOR,CSVWriter.NO_QUOTE_CHARACTER);
//csvWriter = new CSVWriter(out,CSVWriter.DEFAULT_SEPARATOR,CSVWriter.NO_QUOTE_CHARACTER);
String[] columns = new String[] {"col1","col2","col3","col4"};
// Writer w= new FileWriter(out);
BeanToCsv bc = new BeanToCsv();
List ls;
csvWriter.writeNext(columns);
//bc.write(setColumMapping(), csvWriter, objList);
System.out.println("complete");
csvWriter.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static MappingStrategy setColumMapping(CSVReader csvReader) throws IOException {
// TODO Auto-generated method stub
ColumnPositionMappingStrategy strategy = new ColumnPositionMappingStrategy();
strategy.setType(DataBean2.class);
String[] columns = new String[] {"col1","col2","col3","col4"};
strategy.setColumnMapping(columns);
return strategy;
}
}
i opencsv3.7 verwenden und csvtobean mit csv in Bean tranform und dann ColumnPositionMappingStrategy für Spalte mappings.and weil Spalten von csv kann in Zahlen variieren Ich bin nicht in der Lage, Mapping bereitzustellen. Gibt es eine Möglichkeit, diese CSV mit opencsv zu analysieren – coder
Es ist erforderlich für Sie arbeiten, so viele Dinge zu verwenden? Ich meine, müssen Sie csvtobean, ColumnPositionMappingStrategy, etc ?. Darüber hinaus fand ich ein Beispiel, das Ihnen helfen kann [Java CSV Parser/Writer Beispiel mit OpenCSV] (http://www.journaldev.com/2544/java-csv-parserwriter-example-using-opencsv-apache-commons -csv-und-supercsv).Hier ist ein weiteres Beispiel [CSV-Datei in Java lesen/schreiben] (http://viralpatel.net/blogs/java-read-write-csv-file/) – Cagt