1

一連の xml ファイルとプロパティ ファイルを読み取り、データを解析する必要があります。現在、これを行うためにinputstream ans string builderを使用しています。ただし、これは入力ファイルと同じ方法でファイルを作成しません。空白と改行を削除したくありません。どうすればこれを達成できますか。

is = test.getInputStream();
br = new BufferedReader(new InputStreamReader(is));
String line5;
StringBuilder sb5 = new StringBuilder();
while ((line5 = br.readLine()) != null) {
    sb5.append(line5);
} 
String s = sb5.toString();

私の出力は次のとおりです。

#test 123 #test2 345

予想される出力は次のとおりです。

#test
123
#test2
345

何かご意見は ?ありがとう

4

3 に答える 3

3

br.readLine() は改行を消費するため、行を追加した後に StringBuilder に追加する必要があります。

is = test.getInputStream();
br = new BufferedReader(new InputStreamReader(is));
String line5;
StringBuilder sb5 = new StringBuilder();
while ((line5 = br.readLine()) != null) {
    sb5.append(line5);
    sb5.append("\n");
}

ファイルを文字列に読み取るための非常に単純なソリューションが必要な場合、Apache Commons-IOにはそのようなタスクを実行するためのメソッド ( org.apache.commons.io.FileUtils ) があります。

FileUtils.readFileToString(File file, String encoding);
于 2012-07-23T18:28:10.873 に答える
1

readLine()メソッドは EOL 文字 (\n) を追加しません。したがって、文字列をビルダーに追加するときに、次のように EOL 文字を追加する必要があります。sb5.append(line5+"\n");

于 2012-07-23T18:28:14.460 に答える
1

さまざまなreadLineメソッドが入力から改行を破棄します。

BufferedReaderドキュメントから:

戻り値: 行終了文字を含まない、行の内容を含む文字列、またはストリームの末尾に到達した場合は null

StringBuilder解決策は、 for every readLine:に改行を追加し直すのと同じくらい簡単かもしれませんsb5.append(line5 + "\n");

readより良い代替手段は、最初にメソッドを使用して中間バッファに読み込み、独自のchar[]. を引き続き使用できStringBuilder.append、ファイルの内容と一致する文字列を取得できます。

于 2012-07-23T18:28:31.273 に答える