private void getCSV(){
String speakerPath = filePath + "SeminarSpeaker.csv";//csv路径
File speakerCSVFile = new File(filePath + "SeminarSpeaker.csv");
ArrayList<String> strLists = new ArrayList<String>();
if (mSpeakerLists != null) {
mSpeakerLists.clear();
} else
mSpeakerLists = new ArrayList<SeminarSpeaker>();
try {
bReader = new BufferedReader(new FileReader(speakerCSVFile));
CSVReader csvReader = new CSVReader(bReader);//这里以“|”为分隔符,可在CSVReader类中修改
String[] next = {};
while (true) {
next = csvReader.readNext();
if (next != null) {
SeminarSpeaker speaker = new SeminarSpeaker(next[0], next[1], next[2], next[3], next[4], next[5], next[6],next[7],next[8],next[9],next[10],next[11],next[12],next[13]);//实体类,一行有多少个数据就写多少个
mSpeakerLists.add(speaker);
} else {
break;
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
if (bReader != null) {
try {
bReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Log.i(TAG, "speaklists="+mSpeakerLists.size());
}
SeminarSpeaker.java
public class SeminarSpeaker {
//EventID|CompanyID|Seminarsummary|SpeakerPhoto|SpeakerName|SpeakerPosition|SpeakerInfo|Language|FreeParticipation|ContactPerson|Email|Tel|LangID|ID|SeqNo
public String eventID;
public String companyID;
public String seminarSummary;
public String speakerPhoto;
public String speakerName;
public String speakerPosition;
public String speakerInfo;
public String language;
public String freeParticipation;
public String contactPerson;
public String email;
public String tel;
public String langID;
public String id;
public SeminarSpeaker(String eventID, String companyID, String seminarSummary, String speakerPhoto, String speakerName, String speakerPosition,
String speakerInfo, String language, String freeParticipation, String contactPerson, String email, String tel, String langID, String id) {
this.eventID = eventID;
this.companyID = companyID;
this.seminarSummary = seminarSummary;
this.speakerPhoto = speakerPhoto;
this.speakerName = speakerName;
this.speakerPosition = speakerPosition;
this.speakerInfo = speakerInfo;
this.language = language;
this.freeParticipation = freeParticipation;
this.contactPerson = contactPerson;
this.email = email;
this.tel = tel;
this.langID = langID;
this.id = id;
}
}
CSVReader.java : 工具类
package com.adsale.ChinaPlas.util;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.Reader;
import java.util.ArrayList;
import java.util.List;
import android.util.Log;
/**
* A very simple CSV reader released under a commercial-friendly license.
*
* @author Glen Smith
*
*/
public class CSVReader {
private BufferedReader br;
private boolean hasNext = true;
private char separator;
private char quotechar;
private int skipLines;
private boolean linesSkiped;
/** The default separator to use if none is supplied to the constructor. */
public static final char DEFAULT_SEPARATOR = '|';
/**
* The default quote character to use if none is supplied to the
* constructor.
*/
public static final char DEFAULT_QUOTE_CHARACTER = '"';
/**
* The default line to start reading.
*/
public static final int DEFAULT_SKIP_LINES = 0;
/**
* Constructs CSVReader using a comma for the separator.
*
* @param reader
* the reader to an underlying CSV source.
*/
public CSVReader(Reader reader) {
this(reader, DEFAULT_SEPARATOR, DEFAULT_QUOTE_CHARACTER,
DEFAULT_SKIP_LINES);
}
/**
* Constructs CSVReader with supplied separator and quote char.
*
* @param reader
* the reader to an underlying CSV source.
* @param separator
* the delimiter to use for separating entries
* @param quotechar
* the character to use for quoted elements
* @param line
* the line number to skip for start reading
*/
public CSVReader(Reader reader, char separator, char quotechar, int line) {
this.br = new BufferedReader(reader);
this.separator = separator;
this.quotechar = quotechar;
this.skipLines = line;
}
/**
* Reads the next line from the buffer and converts to a string array.
*
* @return a string array with each comma-separated element as a separate
* entry.
*
* @throws IOException
* if bad things happen during the read
*/
public String[] readNext() throws IOException {
String nextLine = getNextLine();
return hasNext ? parseLine(nextLine) : null;
}
/**
* Reads the next line from the file.
*
* @return the next line from the file without trailing newline
* @throws IOException
* if bad things happen during the read
*/
private String getNextLine() throws IOException {
if (!this.linesSkiped) {
for (int i = 0; i < skipLines; i++) {
br.readLine();
}
this.linesSkiped = true;
}
String nextLine = br.readLine();
if (nextLine == null) {
hasNext = false;
}
return hasNext ? nextLine : null;
}
/**
* Parses an incoming String and returns an array of elements.
*
* @param nextLine
* the string to parse
* @return the comma-tokenized list of elements, or null if nextLine is null
* @throws IOException if bad things happen during the read
*/
private String[] parseLine(String nextLine) throws IOException {
if (nextLine == null) {
return null;
}
List<String> tokensOnThisLine = new ArrayList<String>();
StringBuffer sb = new StringBuffer();
boolean inQuotes = false;
do {
if (inQuotes) {
// continuing a quoted section, reappend newline
sb.append("\n");
nextLine = getNextLine();
if (nextLine == null)
break;
}
for (int i = 0; i < nextLine.length(); i++) {
char c = nextLine.charAt(i);
// if (c == quotechar) {
// // this gets complex... the quote may end a quoted block, or escape another quote.
// // do a 1-char lookahead:
// if( inQuotes // we are in quotes, therefore there can be escaped quotes in here.
// && nextLine.length() > (i+1) // there is indeed another character to check.
// && nextLine.charAt(i+1) == quotechar ){ // ..and that char. is a quote also.
// // we have two quote chars in a row == one quote char, so consume them both and
// // put one on the token. we do *not* exit the quoted text.
// sb.append(nextLine.charAt(i+1));
// i++;
// }else{
// inQuotes = !inQuotes;
// // the tricky case of an embedded quote in the middle: a,bc"d"ef,g
// if(i>2 //not on the begining of the line
// && nextLine.charAt(i-1) != this.separator //not at the begining of an escape sequence
// && nextLine.length()>(i+1) &&
// nextLine.charAt(i+1) != this.separator //not at the end of an escape sequence
// ){
// sb.append(c);
// }
// }
if (c == separator && !inQuotes) {
tokensOnThisLine.add(sb.toString());
sb = new StringBuffer(); // start work on next token
} else {
sb.append(c);
}
}
} while (inQuotes);
tokensOnThisLine.add(sb.toString());
return (String[]) tokensOnThisLine.toArray(new String[0]);
}
/**
* Closes the underlying reader.
*
* @throws IOException if the close fails
*/
public void close() throws IOException{
br.close();
}
}