BufferedReader踩坑

使用Runtime.getRuntime()创建一个进程,返回值为Process类。
进程的exec()方法执行dos命令。
process的waitFor()方法,等待命令执行完毕。
process.getinputstream()获取dos命令执行完的信息。

重要:
因为之前一直使用的是bufferReader去读,读取的返回值始终有两行读不出来。
原因为命令行窗口的输出有空行,使用readline读取当读到空行时就会自动停止。
后面使用InputStream字节流一个个字节读就可以读出来。
字节流
在这里插入图片描述

后续

BufferReader官网api.
查看官网BufferReader的api,一样可以使用read​(char[] cbuf, int off, int len)使用缓冲区进行读取。而且使用BufferReader读取效率高。

为什么呢?
因为java.io.BufferedReader和java.io.BufferedWriter类各拥有8192字符的缓冲区。当BufferedReader在读取文本文件时,会先尽量从文件中读入字符数据并置入缓冲区,而之后若使用read()方法,会先从缓冲区中进行读取。如果缓冲区数据不足,才会再从文件中读取,使用BufferedWriter时,写入的数据并不会先输出到目的地,而是先存储至缓冲区中。如果缓冲区中的数据满了,才会一次对目的地进行写出。

最大的区别是BufferedReader有默认的8k缓冲区。读取数据到缓冲区就可以减少去io读取数据的过程,减少程序开销,从而达到读取效率高。

常用io流读取文件
1.获取数据的字节流
2.使用inputStreamReader达到字符流转字节流
3.使用BufferedReader提高效率(缓冲)

			String urlNameString = url + "?" + param;
            URL realUrl = new URL(urlNameString);
            // 打开和URL之间的连接
            URLConnection connection = realUrl.openConnection();
            // 设置通用的请求属性
            connection.setRequestProperty("accept", "*/*");
            connection.setRequestProperty("connection", "Keep-Alive");
            connection.setRequestProperty("user-agent",
                    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
            // 建立实际的连接
            connection.connect();
            // 获取所有响应头字段
            Map<String, List<String>> map = connection.getHeaderFields();
            // 遍历所有的响应头字段
            for (String key : map.keySet()) {
                System.out.println(key + "--->" + map.get(key));
            }
            // 定义 BufferedReader输入流来读取URL的响应
            in = new BufferedReader(new InputStreamReader(
                    connection.getInputStream()));
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
            }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值