簡體   English   中英

java使用stringbuilder讀取屬性和xml文件

[英]java read properties and xml file using stringbuilder

我需要讀取一組xml和屬性文件並解析數據。 目前,我正在使用inputstream ans字符串生成器來執行此操作。 但這不會以與輸入文件相同的方式創建文件。 我不想刪除空格和換行。 我該如何做到這一點。

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

有什么想法嗎 ? 謝謝

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");
}

如果您想要一個非常簡單的解決方案來將文件讀取為String,則Apache Commons-IO提供了一種用於執行此類任務的方法( org.apache.commons.io.FileUtils )。

FileUtils.readFileToString(File file, String encoding);

readLine()方法不添加EOL字符(\\ n)。 因此,在將字符串附加到生成器時,您需要添加EOL字符,例如sb5.append(line5+"\\n");

各種readLine方法從輸入中丟棄換行符。

BufferedReader docs中

返回:包含行內容的String,不包含任何行終止字符;如果已到達流的末尾,則返回null

一個解決方案可能很簡單,就是為每個readLine重新向StringBuilder添加換行: sb5.append(line5 + "\\n");

更好的選擇是使用read方法首先讀取中間緩沖區,並提供您自己的char[] 您仍然可以使用StringBuilder.append ,並獲取一個與文件內容匹配的字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM