我正在读这样的html文件:
try {
BufferedReader bufferReader = new BufferedReader(new FileReader(path));
String content;
while((content = bufferReader.readLine()) != null) {
result += content;
}
bufferReader.close();
} catch (Exception e) {
return e.getMessage();
}
我想在GWT textArea中显示它,我将其作为String给出。但是字符串会丢失缩进并作为单行文本出现。有没有办法正确显示格式(带缩进)?
答案 0 :(得分:5)
这可能是因为readLine()
砍掉了行尾字符。每行再次添加它们。
除此之外,在循环中使用StringBuilder
代替+=
使用String
:
try {
BufferedReader bufferReader = new BufferedReader(new FileReader(path));
StringBuilder sb = new StringBuilder();
String content;
while ((content = bufferReader.readLine()) != null) {
sb.append(content);
sb.append('\n'); // Add line separator
}
bufferReader.close();
} catch (Exception e) {
return e.getMessage();
}
String result = sb.toString();
答案 1 :(得分:1)
好吧,假设你的textArea理解HTML(我不知道具体是GWT),为什么不用<pre>
作为前缀,然后追加</pre>
?
您可能仍需要将所有HTML特殊字符(例如&
至&
和<
转义为<
。
答案 2 :(得分:1)
使用FileReader可能更有效 - 没有理由你必须逐行阅读文本。像Jesper建议的那样,使用StringBuilder构建String更有效。此外,使用FileReader,您不必手动附加任何换行符:
StringBuilder sb = new StringBuilder();
FileReader in = null;
try {
in = new FileReader(path);
int read;
char buf[] = new char[4096];
while ((read = in.read(buf)) != -1) {
sb.append(buf, 0, read);
}
} catch (Exception e) {
return e.getMessage();
} finally {
in.close();
}
String result = sb.toString();
答案 3 :(得分:0)
如果您的HTML恰好是XHTML,那么您可以尝试将其放入XML解析器,例如jdom或dom4j,它通常具有一些“漂亮打印”选项。