0

良い一日!raw フォルダーにあるテキスト ファイルの行数を返す関数を作成しようとしましたが、常に 0 になるようです。

私が使用している機能は次のとおりです。

int getFileSize (InputStreamReader p_is) { 
        int lineCtr = 0;
        try {
            BufferedReader br = new BufferedReader(p_is);

            String theLine="";
            lineCtr = 0;
            while ((theLine = br.readLine()) != null)   {
                lineCtr++;
            }
        } catch (Exception e) {
                e.printStackTrace();
        }
        return lineCtr;

    }

次に、可変サイズを別のアクティビティに渡します。

    InputStreamReader is = new InputStreamReader(getResources().openRawResource(R.raw.sampleTxt));          
    int size = getFileSize(InputStreamReader is);

    intent.putExtra("v_size", size);
    startActivity(intent);

次に、他のアクティビティでそれを取得します。

    fileSize = getIntent().getIntExtra("v_size",0);

fileSize を表示しようとすると、常に 0 が表示されます。

    message= (TextView) findViewById(R.id.tv_message);

    String strSize = Integer.toString(fileSize);
    message.setText(strSize);

putExtra() で文字列を渡そうとしましたが、0 も表示されます。間違いがあれば修正してください。ご協力ありがとうございます。

4

2 に答える 2

2

それはあなたのラインです

int size = getFileSize(InputStreamReader is);

InputStreamReaderコードをコンパイルするときにエラーが表示されるはずです。どうやってそれを実行したのかわかりません。

したがって、それを削除するだけで、必要な行とカウントを読み取ることができるはずです。

それともgetFileSize(InputStreamReader is)、ここにコードを書いていたときのコピー/貼り付けエラーですか?

于 2013-08-12T11:10:28.797 に答える
0

このコードを使用してみてください:

public static int countLine(String s){
    int ct=0;
    for(int i=0;i<s.length();i++){
        if(s.charAt(i)=='\n')
            ct++;
    }
    return ct;
}

文字列 s はテキスト ファイルを読み取った結果です。このコードを試したところ、正しく動作しました

于 2013-08-12T11:50:02.827 に答える