Android FileInputStream代码导致崩溃

时间:2012-05-18 15:09:02

标签: android bufferedreader fileinputstream

我已经解决了自己的问题,但我不知道为什么我的第一次尝试不起作用,我希望有人可以告诉我为什么。 我也希望有人能告诉我,我的最终解决方案是否是“好的”(我的意思是,这是否有效)?

这是我第一次尝试读取我之前创建的输入文件:

private byte[] mInputData;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.second_view);

    Intent myIntent = getIntent();

    mFilename = myIntent.getStringExtra("FILENAME");
    mSplitSeq = myIntent.getStringExtra("SPLIT_SEQ");

    try {
        fis = openFileInput(mFilename);
        fis.read(mInputData);
        fis.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

这是我在网上找到的实际工作:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.second_view);

    Intent myIntent = getIntent();

    mFilename = myIntent.getStringExtra("FILENAME");
    mSplitSeq = myIntent.getStringExtra("SPLIT_SEQ");

    try {
        fis = openFileInput(mFilename);
        BufferedReader reader = new BufferedReader(new InputStreamReader(fis));
        String line = null, input="";
        while ((line = reader.readLine()) != null)
            mTimeStr += line;
        reader.close();
        fis.close();
        //fis.read(mInputData);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

我在第一次实现时收到的错误是在调用fis.read(mInputData)函数时出现NullPointerException。

1 个答案:

答案 0 :(得分:3)

我很确定这是因为mInputData永远不会被初始化。你需要一条线,如mInputData = new byte[1000];。相反,您告诉read()将数据提供给等于null的引用,即NullPointerException。