1

生ファイルを読み取るAndroidアプリで次のようなメソッドがありました:

public String inputStreamToString(InputStream isTwo) throws IOException {
        StringBuffer sBuffer = new StringBuffer();
        DataInputStream dataIO = new DataInputStream(isTwo);
        String strLineTwo = null;
        while ((strLineTwo = dataIO.readLine()) != null) {
            sBuffer.append(strLineTwo + "\n");
        }
        dataIO.close();
        isTwo.close();
        return sBuffer.toString();

    }

ただし、DataInputStream オブジェクトは現在非推奨になっているようです。調べてみたところ、 を で囲んだほうがいいと聞きましreadline()BufferedInputStream。誰か私が彼の文章を完成させるのを手伝ってくれませんか (欠けている行を埋める)? brvarの宣言方法がわかりません。これは私がこれまでに持っているものです:

public String inputStreamToString(InputStream isTwo) throws IOException {
        String strLineTwo = null;
        BufferedReader br = null;

        StringBuffer sBuffer = new StringBuffer();
        InputStreamReader dataIO = new InputStreamReader(isTwo);


        while ((strLineTwo = br.readLine()) != null) {
            sBuffer.append(strLineTwo + "\n");
        }

        dataIO.close();
        isTwo.close();
        return sBuffer.toString();

このメソッドを呼び出す、まだ触れていない前のコードを次に示します。

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.tech);
        InputStream iFileTwo = getResources().openRawResource(R.raw.testing);
        try {
            TextView helpText = (TextView) findViewById(R.id.tvStream);
            String strFileTwo = inputStreamToString(iFileTwo);
            helpText.setText(strFileTwo);

        } catch (Exception e) {
            Log.e(DEBUG_TAG_THREE, "InputStreamToString failure", e);
        }
    }

また、Android 2.3 から 4.2 (現在) まで動作することを確認したいと思います。助けてくれてありがとう。

4

2 に答える 2

4

これは私がそれを書く方法です。これにより、オーバーヘッドが大幅に削減され、改行が元の状態のまま保持されます。

public String inputStreamToString(InputStream in) throws IOException {
    StringBuilder out = new StringBuilder();
    char[] chars = new char[1024];
    Reader reader = new InputStreamReader(in /*, CHARSET_TO_USE */);

    try {
        for (int len; (len = reader.read(chars)) > 0; )
            out.append(chars, 0, len);
    } finally {
        try {
            in.close();
        } catch (IOException ignored) {
        }
    }
    return out.toString();
}
于 2012-12-19T16:41:15.797 に答える
0

単なる提案です。移行している場合は、実際にストリームを管理し、多くのエラー状態からあなたを救うなどのIOUtilsfrom ライブラリを使用しないでください。apache commons

于 2012-12-19T17:30:34.660 に答える