安卓从java中的CSV文件中提取值
我在从我正在开发的安卓应用程序的CSV文件中提取值时遇到一些问题。CSV文件采用以下格式:
Acton Town (District),Acton Town (Piccadilly),2.00
Aldgate (Circle),Aldgate (Metropolitan),4.00
Aldgate East (District),Aldgate East (Hammersmith And City),2.00
我尝试使用以下方法将其导入java类:
public ArrayList<Connection> importConnections(){
try
{
//gets the lines.txt file from assets
in = this.getAssets().open("connections.csv");
Scanner scan = new Scanner(in);
TextView lineData = (TextView)findViewById(R.id.displayLine);
String connection = null;
String startingStation = null;
String endingStation = null;
Float duration = 0;
do
{
connection = scan.nextLine();
String delimiter = ",\n";
StringTokenizer tokens = new StringTokenizer(connection, delimiter);
startingStation = tokens.nextToken();
endingStation = tokens.nextToken();
duration = Float.parseFloat(tokens.nextToken());
connections.add(startStation, endStation, duration);
}
while(scan.hasNext());
//for testing purposes
lineData.setText(endingStation);
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return connections;
}
如果我运行这个,应用程序将崩溃,我不知道为什么。如果我将lineData.setText(endingStation)
设置为lineData.setText(connection)
,它将显示整行,例如:
Acton Town (District),Acton Town (Piccadilly),2.00
如果我把这个评论删掉
duration = Float.parseFloat(tokens.nextToken());
它将运行该方法。有人能找出这种方法的缺点吗
# 1 楼答案
您可以尝试使用OpenCSVhttp://opencsv.sourceforge.net/
它使用起来非常简单,并返回每行的数组
就像我说的,它很容易使用,并且可以防止您自己解析字符串