0

ここに私のコードがあります:

        fis = openFileInput("MY_FILE");
        StringBuffer fileContent = new StringBuffer("");
        byte[] buffer = new byte[1024];
        while (fis.read(buffer) != -1) {
            fileContent.append(new String(buffer));
        }
        String myVariable = fileContent.toString().trim();

StringBuffer がバイトを必要とするのはなぜですか? それはどのように正確に機能しますか?

myVariable を fileContent に設定するとき、データの後に余分な空白があるのはなぜですか? (MY_FILE にテキスト "dad" が含まれていると仮定)

trim メソッドがないと、変数が : dad に設定されます。


お父さんの後の大量の空白。テキストファイルには「お父さん」とだけ書かれていますが、

4

2 に答える 2

4

テキストが「お父さん」である間、バッファサイズが1024であるため、空白が発生します。これは、バッファに多くの空きスペースがあることを意味します。

byte はプリミティブ データ型であるため、バッファー内の空のスペースの内容を null にすることはできず、代わりにデフォルトで 0 になります。これは、文字列に変換するときに空白として解釈されます。

于 2013-06-27T08:11:01.613 に答える
2

その理由は Raghav Sood の答えにあります。次を使用してそれを克服できます。

byte[] buffer = new byte[1024];
int read = 0; // saves how many bytes were actually read
while ((read = fis.read(buffer)) != -1) {
    // don't use the complete buffer, only the used part of it.
    fileContent.append(new String(buffer, 0, read));
}
String myVariable = fileContent.toString();
于 2013-06-27T08:19:59.513 に答える