首页 > 编程语言 >Java浅谈BufferedReader

Java浅谈BufferedReader

时间:2024-02-03 23:13:43浏览次数:33  
标签:Java 浅谈 br BufferedReader 读入 缓冲区 new 读取

既然Scanner简单好用,为什么要用BufferedReader呢?

主要原因是面对大量的读入显得较慢且不安全,这里体现在三个方面,一方面是解析的问题,好用意味着封装的更复杂,一拖n的接口解析起来会慢;另一方面是缓冲区的问题,Scanner缓冲区小1024B,直面物理介质的机会更大,众所周知,IO时间在大数据面前总是拖后腿的。而BufferedReader是面对字符流的输入,虽然面对二进制等形式充满困扰,但是文本文件还是主流形式,自然他也是读入的强力工具,处理对象单一使得他的底层操作更简单,效率更高,并且拥有一个8192B的缓冲区域,缓冲区域更大;最后一个方面是关于同步的问题,BufferedReader的read函数添加了synchronized同步关键字,每次读入程序只能由一个线程执行,不会出现并发读入导致的错误,例如:同一个缓冲区域中,A和B都要读取同一行内容,A读取走了B读取的不完整,或者A持续拥有缓冲区的权限导致B读取的内容不正确等等问题。

BufferedReader如何构造以及使用?

BufferedReader br = new BufferedReader(Reader in);

 BufferedReader采用的是装饰者模式,主要是为其他读取流增加额外的功能,比如缓冲区,更简单高效的读取操作等;被装饰者则是Reader抽象类的具体实现类,比如InputStreamReader、FileReader等;这里给出一个从控制台读入的代码段:

int n;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
n = Integer.parseInt(br.readLine());

Tips:主要是用来处理字符串文本,想要处理数字等常见形式可以基于Integer等形式自带的格式转换。

标签:Java,浅谈,br,BufferedReader,读入,缓冲区,new,读取
From: https://www.cnblogs.com/YaoMa/p/18005364

相关文章

  • java面向对象基础语法之成员变量和局部变量的区别(详细)
    一:概述在面向对象一开始的学习中,对一些其中基础语法的了解和熟悉非常的重要,有助于更深入的去学习面向对象的知识。在这里具体的说明一下成员变量和局部变量的区别。二:具体说明<1>java中变量的分类<2>成员变量和局部变量的定义说明。成员变量:成员变量分为静态变量(类变量)和实例变量......
  • 【Java基础】BlockingQueue及其子类
    ArrayBlockingQueue(数组实现的有界阻塞队列)特点:基于数组的有界阻塞队列,按先进先出(FIFO)原则排序元素。可以选择公平性(即按线程等待的先后顺序访问队列)或非公平性,默认是非公平的。用途:适用于需要固定大小的队列场景。LinkedBlockingQueue(链表实现的阻塞队列)特点:基于链表的可选边界(有......
  • 地铁最优线路算法的求解(三)-深度优先搜索java实现
    多的不说,showmethecode,先上一段java代码1/*2*深度优先算法(DFS)算法生成所有可能路径3*startId:出发站4*endId:到达站5*graph:辅助邻接矩阵,若99站与35站相邻,6*则graph[35][99]=1,graph[99][35]=17*8*......
  • Java套接字编程学习
    一、前言Java套接字编程用于不同JRE上运行的应用程序之间进行通信,可以是面向连接或无连接的。Socket类和ServerSocket类用于面向连接的套接字编程,DatagramSocket类和DatagramPacket类用于无连接的套接字编程。我们需要根据服务器IP地址和端口号来区分套接字。Socket类用于客户端和......
  • Java生成微信小程序二维码的方式有哪些?
    大家好我是咕噜美乐蒂,很高兴又见面啦!今天我们来谈一下如何使用Java生成微信小程序二维码,有哪些方式方法呢?生成微信小程序二维码是开发微信小程序时的常见需求之一。在Java中,我们可以使用多种方式来生成微信小程序二维码。本文将为您介绍几种常用的方式。一、使用第三方库1.zxingzxi......
  • linux的java服务启动,停止sh脚本
    #!/bin/bash#######################################################Copyright2019PhamNgocHoai##LicensedundertheApacheLicense,Version2.0(the"License");#youmaynotusethisfileexceptincompliancewiththeLicense.#Youmay......
  • Java 中的Map集合
    Map1.Map接口中常用的方法importjava.util.Collection;importjava.util.HashMap;importjava.util.Map;/*java.util.Map接口中常用的方法:Map和Collection没有继承关系Map集合以key和value的方式存储数据:键值对key和value都是引用数据类型key和value都是存储对象的地......
  • 如何在 JavaScript 中验证 URL
    如何在JavaScript中验证URL统一资源定位符URL(UniformResourceLocator)引导你进入互联网上的一个页面或文件。URL是互联网上事物的地址。所有有效的URL都遵循某些模式。因此,如果你知道这些模式,你就可以在你的程序中确定一个URL是否有效,并给出反馈、抛出一个错误,等等。......
  • java项目启动脚本
    #!/bin/sh##javaenv##API_NAME:包名API_NAME=dsJAR_NAME=`ls$API_NAME*.jar`#PID代表是PID文件PID=$API_NAME\.pid#使用说明,用来提示输入参数usage(){echo"Usage:sh执行脚本.sh[start|stop|restart|status]"exit1}#检查程序是否在运行is_ex......
  • java中如何获取Stream流
    在Java中获取Stream流主要有以下几种方式:通过集合类(Collection)获取:所有的java.util.Collection接口的实现类,包括List,Set,和Queue等,都可以使用.stream()方法来获取一个Stream。例如:List<String>list=Arrays.asList("a","b","c");Stream<String>streamOfList=......