0

我已经解决了自己的问题,但我不知道为什么我的第一次尝试没有奏效,我希望有人能告诉我原因。我还希望是否有人能告诉我我的最终解决方案是否是“好”的解决方案(我的意思是,它是否有效)?

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

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。

4

1 回答 1

3

我很确定这是因为 mInputData 从未初始化。您需要在其中设置一条线,例如mInputData = new byte[1000];. 相反,您告诉read()将数据提供给等于 null 的引用,即 NullPointerException。

于 2012-05-18T15:15:42.260 回答