I'm trying to read from a file called "quiz_questions.txt" in my res/raw folder. The code I have compiles, but it looks like it stops before it gets to the FileInputStream. Maybe it is opening it, but not reading it. I'm not sure.
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();
}
}
}
}
You don't post it, but I imagine that you are getting a NullPointerException. This is because con
is null
when you try to create the FileInputStream
.
Since an Activity
is already a Context
, you can just eliminate con
from the statement. (You should also use the InputStream
interface instead of FileInputStream
.)
InputStream is = getResources().openRawResource(R.raw.quiz_questions);
Finally, you should reorganize your code so is
is closed whether or not an exception is thrown:
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();
}
}