我有一個csv文件,我的應用程序從互聯網上下載,然後解析。但是,每當我實際解析csv文件時,我的app force會在「Band = RowData [1];」行以及第1行關閉並出現錯誤。我從未處理過CSV文件,因此它會有所幫助有人可以告訴我如何正確獲取CSV文件的行數據並將行數據轉換爲字符串。這裏是CSV文件的位置:http://www.beaconschool.org/~markovic/lincoln.php獲取然後將CSV行數據導出到字符串(android)
我該如何讓它讀取我CSV文件中的所有內容,並將所有內容添加到共享首選項文件中?
此外,它似乎是有些工作,因爲它產生的這種共享偏好文件,其中包含以下內容
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="title">""</string>
<string name="band">"ZQ11ISF1"</string>
<string name="description">""<br>""</string>
<string name="data">""</string>
<string name="class">"INSTRUCTIONAL SKILLS"</string>
<string name="number">"1"</string>
<string name="teacher">"MARKOVIC"</string>
<string name="date">""</string>
<string name="type">""</string>
</map>
這裏是我的應用程序,獲取並解析CSV文件,試圖代碼把該行的數據轉換成字符串
HttpClient httpClient = new DefaultHttpClient();
HttpContext localContext = new BasicHttpContext();
HttpGet httpGet = new HttpGet("http://www.beaconschool.org/~markovic/lincoln.php");
HttpResponse response = httpClient.execute(httpGet, localContext);
String result = "";
try {
Log.d("receiver", "animation stopped and downloaded file");
BufferedReader reader = new BufferedReader(
new InputStreamReader(
response.getEntity().getContent()
)
);
String line;
while ((line = reader.readLine()) != null) {
String[] RowData = line.split(",");
Data = RowData[0];
Band = RowData[1];
Number = RowData[2];
Class = RowData[3];
Teacher = RowData[4];
Title = RowData[5];
Date = RowData[6];
Type = RowData[7];
Description = RowData[8];
SharedPreferences.Editor localEditor = getActivity().getSharedPreferences("due_today", Context.MODE_PRIVATE).edit();
localEditor.putString("data", Data.toString());
localEditor.putString("band", Band.toString());
localEditor.putString("number", Number.toString());
localEditor.putString("class", Class.toString());
localEditor.putString("teacher", Teacher.toString());
localEditor.putString("title", Title.toString());
localEditor.putString("date", Date.toString());
localEditor.putString("type", Type.toString());
localEditor.putString("description", Description.toString());
localEditor.apply();
Log.d("receiver", "information given to shared preferences");
swipeLayout.setRefreshing(false);
}
這裏是logcat的
06-28 01:21:24.662: W/dalvikvm(7808): VFY: unable to resolve direct method 82: Landroid/content/res/TypedArray;.<init> (Landroid/content/res/Resources;[I[II)V
06-28 01:21:29.442: W/dalvikvm(7808): threadid=11: thread exiting with uncaught exception (group=0x41665ce0)
06-28 01:21:29.452: E/AndroidRuntime(7808): FATAL EXCEPTION: AsyncTask #1
06-28 01:21:29.452: E/AndroidRuntime(7808): Process: com.bernard.beaconportal, PID: 7808
06-28 01:21:29.452: E/AndroidRuntime(7808): java.lang.RuntimeException: An error occured while executing doInBackground()
06-28 01:21:29.452: E/AndroidRuntime(7808): at android.os.AsyncTask$3.done(AsyncTask.java:300)
06-28 01:21:29.452: E/AndroidRuntime(7808): at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
06-28 01:21:29.452: E/AndroidRuntime(7808): at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
06-28 01:21:29.452: E/AndroidRuntime(7808): at java.util.concurrent.FutureTask.run(FutureTask.java:242)
06-28 01:21:29.452: E/AndroidRuntime(7808): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
06-28 01:21:29.452: E/AndroidRuntime(7808): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
06-28 01:21:29.452: E/AndroidRuntime(7808): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
06-28 01:21:29.452: E/AndroidRuntime(7808): at java.lang.Thread.run(Thread.java:841)
06-28 01:21:29.452: E/AndroidRuntime(7808): Caused by: java.lang.ArrayIndexOutOfBoundsException: length=1; index=1
06-28 01:21:29.452: E/AndroidRuntime(7808): at com.bernard.beaconportal.Due_Today_Fragment$Update.doInBackground(Due_Today_Fragment.java:232)
06-28 01:21:29.452: E/AndroidRuntime(7808): at com.bernard.beaconportal.Due_Today_Fragment$Update.doInBackground(Due_Today_Fragment.java:1)
06-28 01:21:29.452: E/AndroidRuntime(7808): at android.os.AsyncTask$2.call(AsyncTask.java:288)
06-28 01:21:29.452: E/AndroidRuntime(7808): at java.util.concurrent.FutureTask.run(FutureTask.java:237)
06-28 01:21:29.452: E/AndroidRuntime(7808): ... 4 more
rowdata的長度是多少?看起來像你正在獲取數組索引超出限制例外... –
按長度你是指字符數? –
看看字符串中的數據實際上是什麼,看起來你的行中沒有逗號。 –