BufferedReader类 与 InputStreamReader 类

转载至:https://blog.csdn.net/sinat_33749961/article/details/58088209
BufferedReader类
    BufferedReader由Reader类扩展而来,提供通用的缓冲方式文本读取,而且提供了很实用的readLine,读取一个文本行,从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取。
一般用法:
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("ming.txt")));
String data = null;
while((data = br.readLine())!=null){
    System.out.println(data);
}
示例如下:
public static String getHtml(String url) throws IOException {
    String source ="";
    String line ="";
    URL _url = new URL(url);
    InputStream inStream = _url.openStream();
    BufferedReader bufferedReader =
    new BufferedReader(new InputStreamReader(inStream,"UTF-8"));
    while((line = bufferedReader.readLine())!=null) {
        source += line;
    }
    return source;
}
InputStreamReader 类
    是字节流通向字符流的桥梁,封裝了InputStream在里头, 它以较高级的方式,一次读取一个一个字符,以文本格式输入 / 输出,可以指定编码格式;
一般用法:
InputStreamReader isr = new InputStreamReader(new FileInputStream("ming.txt"));
while((ch = isr.read())!=-1){
    System.out.print((char)ch);
 }
示例如下:
public static String getHtmlSource( String  url)
    throws MalformedURLException, IOException {
    URLConnection uc = new URL(url).openConnection();
    uc.setConnectTimeout(10000);
    uc.setDoOutput(true);
    InputStream in = new BufferedInputStream(uc.getInputStream());
    InputStreamReader rd = new InputStreamReader(in,"gb2312");
    int c = 0;
    StringBuffer temp = new StringBuffer();
    while((c = rd.read())!= -1){
        temp.append((char)c);
    }
    in.close();
    return temp.toString();
}

Stringbuffer有append()方法,Stringbuffer其实是动态字符串数组
append()是往动态字符串数组添加,跟“xxxx”+“yyyy”相当那个‘+’号
跟String不同的是Stringbuffer是放一起的
String1+String2 和Stringbuffer1.append("yyyy")虽然打印效果一样,但在内存中表示却不一样
String1+String2 存在于不同的两个地址内存
Stringbuffer1.append(Stringbuffer2)放再一起
append(String str),连接一个字符串到末尾。append有很多重载方法.
delete(int start,int end)删除指定位置的字符串。
deleteCharAt(int index)删除指定角标的字符。
方法很多,说也说不完。看看API文档吧。很简单的。
另外需要注意的是,StringBuffer是线程安全的,多用于多线程。
有时候,需要将较短的字符串构建为长的字符串,例如,按键或来自文件中的单词。采用字符串连接的方式效率低。每次连接字符串,都会构建一个新的String对象,即耗时又浪费空间。可以使用StringBuffer。
实例代码
BufferedReader reader = null;
String result = null;
StringBuffer sbf = new StringBuffer();
URL url = new URL(httpUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.connect();
InputStream is = connection.getInputStream();
reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
String strRead = null;
while ((strRead = reader.readLine()) != null) {
    sbf.append(strRead);
    sbf.append("\r\n");
}
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值