繁体   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