以上一篇中的代码为例:
public String download(String urlStr){
StringBuffer sb = new StringBuffer();
String line = null;
BufferedReader buffer = null;
try {
url = new URL(urlStr);
HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
//装饰者模式
buffer = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
while ((line = buffer.readLine()) != null){
sb.append(line);
}
} catch (Exception e) {
e.printStackTrace();
}
finally{
try {
buffer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
Java中的IO流设计:使用装饰者模式:要在InputStream外面套上一层InputStreamReader,再套上一层BufferedReader。
InputStream是一种字节流,读进来都是一个个字节,套上一层InputSteamReader就可以转换成字符流,读进来是一个个字符。
再套上一层BufferedReader, BufferedReader有一个readLine方法,可以一次性读取文件中的一行数据,可以一行行读
只要读取不为空,就可以把读到的数据添加到StringBuffer中去,知道读到一个空行,跳出。