我需要解析一个csv文件并将数据存储到java bean类中。像:
email,fname,lname
imr@gmail.com,abc,xyz
这些细节变成了bean类。我能够解析一个csv文件。如何在bean类中存储细节。
private static List<List<String>> readTXTFile(String csvFileName) throws IOException {
String line = null;
BufferedReader stream = null;
List<List<String>> csvData = new ArrayList<List<String>>();
try {
stream = new BufferedReader(new FileReader(csvFileName));
while ((line = stream.readLine()) != null) {
String[] splitted = line.split(",");
List<String> dataLine = new ArrayList<String>(splitted.length);
for (String data : splitted)
dataLine.add(data);
csvData.add(dataLine);
}
} finally {
if (stream != null)
stream.close();
}
return csvData;
}
上面的代码正在解析csv文件,但我希望将这些数据插入到java bean类中。
答案 0 :(得分:1)
创建POJO
private class Data{//You can make it public too, in a separate class
String email;
String fname;
String lname;
//Getters
//Setters
}
在您原来的课程中,您可以像这样使用
List<Data> datas = new ArrayList<Data>();
try {
stream = new BufferedReader(new FileReader(csvFileName));
while ((line = stream.readLine()) != null) {
String[] splitted = line.split(",");
Data data = new Data();
data.setEmail(splitted[0]);
data.setFname(splitted[1]);
data.setLname(splitted[2]);
datas.add(data);
}
}
你的arraylist中将包含所有行。您可以进行空检查以提高效率。
答案 1 :(得分:1)
使用OpenCSV
书写
CSVWriter writer = new CSVWriter(new FileWriter("myfile.csv"), ',');
String[] headers = {"id","name","address"};
writer.writeNext(headers);
阅读(在bean内部设置并添加到列表中的示例)
USER_ID_INDEX等是常量
CSVReader reader = new CSVReader(new InputStreamReader(userManActionForm.getUploadFile().getInputStream()));
List<String[]> entries = reader.readAll();
List<Member> memberList = new ArrayList<Member>();
for (String[] entry : entries) {
Member member = new Member();
member.setUserId(entry[USER_ID_INDEX]);
member.setUserName(entry[USER_NAME_INDEX]);
member.setGroup(entry[USER_GROUP_INDEX]);
memberList.add(member);
}