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 に答える