Android-将本地html读取为文本文件:使用InputStreamReader.read和BufferedReader.readLine的区别

Android-将本地html读取为文本文件:使用InputStreamReader.read和BufferedReader.readLine的区别,android,text,inputstream,innerhtml,bufferedreader,Android,Text,Inputstream,Innerhtml,Bufferedreader,我必须将html作为文本文件来读取,并且我实现了两种不同的方法,如SO线程中所述。我清理html,只留下正文内容,将其与document.write(string)一起放入DOM,这两种方法都使用,但只有使用Bufferedreader.readLine()(在循环中附加stringBuilder)时,它才起作用。事实上,如果我在Logcat窗口中打印stringBuilder.toString(),我会看到,当使用BufferedReader.readLine()时,stringBuilder

我必须将html作为文本文件来读取,并且我实现了两种不同的方法,如SO线程中所述。我清理html,只留下正文内容,将其与document.write(string)一起放入DOM,这两种方法都使用,但只有使用Bufferedreader.readLine()(在循环中附加stringBuilder)时,它才起作用。事实上,如果我在Logcat窗口中打印stringBuilder.toString(),我会看到,当使用BufferedReader.readLine()时,stringBuilder在Logcat窗口中显示在一行上,而使用InputStreamReader.read(charArray,0,(int)numBytes)时,它显示在多行上(我使用的是实际设备)。也许这可以联系起来,并说明问题所在。我的问题是:如何清除或处理逐读读取的字符数组(charArray,0,(int)numBytes),使其与readLine()循环中附加的stringBuilder相同?

该方法一直读取到行尾,并返回值排除新行字符。因此,当您将其附加到
StringBuffer
时,所有内容都会附加到一行。但是,在的情况下,还包括换行符,导致字符串显示在多行中


要使行为类似,您必须在使用
InputStreamReader.read

时跳过换行符。您知道
BufferedReader#readLine()
在返回行时不包括行终止符吗?这就是导致您获得“单行”logcat输出的原因-实际上,您正在使用此方法剥离HTML中的\n(和\r)字符。如果您包含任何部分或类似样式,这将导致您的HTML呈现不正确。感谢您的重要建议,我想我必须问另一个问题。如何处理StringBuilder以删除换行符(一个或两个字符?什么字符?ASCII 13+10或10+13?仅10?)取决于您阅读的文件。为了通用,您可以替换所有出现的'\n'、'\r'或'\r\n'。使用
String.replace
方法以获得结果。对本主题感兴趣的人,请注意,阅读Jens的建议作为对我问题的评论。