[英]Android: Can't Read From File using FileInputStream
我正在嘗試從res / raw文件夾中的一個名為“quiz_questions.txt”的文件中讀取。 我編譯的代碼,但看起來它在到達FileInputStream之前就停止了。 也許是打開它,但不是讀它。 我不確定。
import java.io.*;
import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;
public class Questions extends Activity {
public String[][] questions = new String[10][5];
public void fillArray() {
{
Context con = null;
try {
//fis = new BufferedInputStream(new FileInputStream("res/raw/quiz_questions.txt"));
FileInputStream fis = (FileInputStream) con.getResources().openRawResource(R.raw.quiz_questions);
BufferedReader br = new BufferedReader(new InputStreamReader(fis));
String nextLine;
int i = 0, j = 0;
while ((nextLine = br.readLine()) != null) {
if (j == 5) {
j = 0;
i++;
}
questions[i][j] = nextLine;
}
fis.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
你不發布它,但我想你得到一個NullPointerException。 這是因為當您嘗試創建FileInputStream
時con
為null
。
由於Activity
已經是Context
,因此您可以從語句中刪除con
。 (您還應該使用InputStream
接口而不是FileInputStream
。)
InputStream is = getResources().openRawResource(R.raw.quiz_questions);
最后,你應該重新組織你的代碼,這樣is
閉合異常是否被拋出:
public void fillArray() {
try (InputStream is = getResources().openRawResource(R.raw.quiz_questions)) {
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String nextLine;
int i = 0, j = 0;
while ((nextLine = br.readLine()) != null) {
if (j == 5) {
j = 0;
i++;
}
questions[i][j] = nextLine;
}
} catch (Exception e) {
e.printStackTrace();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.