Java 安卓:Can';无法使用FileInputStream从文件中读取

Java 安卓:Can';无法使用FileInputStream从文件中读取,java,android,fileinputstream,Java,Android,Fileinputstream,我正在尝试读取我的res/raw文件夹中名为“quick_questions.txt”的文件。我编译的代码,但看起来好像在到达FileInputStream之前就停止了。也许它是在打开它,但不是在读它。我不确定 import java.io.*; import android.app.Activity; import android.content.Context; import android.content.res.Resources; public class Questions ext

我正在尝试读取我的res/raw文件夹中名为“quick_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

InputStream is = getResources().openRawResource(R.raw.quiz_questions);
由于
活动
已经是
上下文
,因此您可以从语句中删除
con
。(您还应该使用
InputStream
接口,而不是
FileInputStream

最后,您应该重新组织代码,以便无论是否引发异常,都能关闭

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();
    }
}

你说得对。我得到了一个NullPointerException,我只是没有注意到。我试着按照你的建议编辑我的代码,但仍然没有成功。好吧,现在我不再得到NullPointerException了。非常感谢您的帮助。android.content.res.AssetManager$AssetInputStream无法转换为java.io。FileInputStream@RavinderPayal-谢谢你接电话。我更新了我的答案,以消除对
FileInputStream
的不必要(和不正确)使用。感谢@TedHoppConsider使用。