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();
}
}
转载于:https://www.cnblogs.com/carrieLee/p/5160674.html
相关资源:JAVA上百实例源码以及开源项目