Java中BufferedInputStream的read​()方法和read​(byte[] b)方法读取读取文本文件

java中BufferedInputStream缓存为什么使IO效率高? 背景     最近在看socket编程,这里面需要用到stream进行数据的读取和写入。于是代码中用到了BufferedInputStream提高读的效率。所以就一直在想为什么加上buffer就能提高效率了,加上之前面试的时候曾有面试官问到过这个问题,当时没有回答上来,并且就上网搜索了一下,发现有个文章是为什么缓存能提高io效率,这个文章中说是因为缓存可以让DMA来处理io流,后面我一直都是这么认为的,今天在网上搜索发现即使你用的是inputstream来读也会用到D 阅读详情

BufferedInputStream流的内部缓冲区是字节数组

java.io.BufferedInputStream extends InputStream

BufferedInputStream:字节缓冲输入流

继承自父类的成员方法:

abstract intread​()

从输入流读取数据的下一个字节。

intread​(byte[] b)

从输入流中读取一些字节数,并将它们存储到缓冲器阵列 b 。

voidclose​()

关闭此输入流并释放与流相关联的任何系统资源。

 BufferedInputStream流的构造方法

构造方法  
Constructor描述
BufferedInputStream​(InputStream in)

创建一个 BufferedInputStream并保存其参数,输入流 in供以后使用。

BufferedInputStream​(InputStream in, int size)

创建具有指定缓冲区大小的 BufferedInputStream ,并保存其参数,输入流 in供以后使用。

一个使用默认缓冲区大小,一个使用指定缓冲区大小

参数:

InputStream in:传一个InputStream是一个字节输入流,我们可以传递FileInputStream增加一个缓冲区,提高FileInputStream的读取效率

int size:指定缓冲流内部缓冲区的大小,不指定默认

使用步骤:

1、创建FileInputStream对象,构造方法中绑定要读取的数据源

2、创建BufferedInputStream对象,构造方法中传递FileInputStream对象,提高FileInputStream对象的读取效率

3、使用BufferedInputStream对象中的方法read,读取文件

4、释放资源(资源释放只要关闭缓冲流就可以了,不需要关闭基本的字节流,因为一旦关闭缓冲流,就会自动关闭基本的字节流)

一次读一个read​()方法

package com.baidu.Buffered;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;

public class 字节缓冲输入流01 {
    public static void main(String[] args) throws IOException {
        FileInputStream fis= new FileInputStream("F:\\develop\\b.txt");
        BufferedInputStream bis = new BufferedInputStream(fis);
        //使用BufferedInputStream读取数据的下一个字节
        int len = 0;
        while ((len = bis.read())!=-1){
            System.out.println(len);
        }

        bis.close();
    }
}
239
187
191
97
98
99

239 187 191是一串神秘数字,97--->a  98----->b  99------>c

 

数组缓冲read​(byte[] b)方法读取

提高效率

package com.baidu.Buffered;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;

public class 字节缓冲输入流01 {
    public static void main(String[] args) throws IOException {
        FileInputStream fis= new FileInputStream("F:\\develop\\b.txt");
        BufferedInputStream bis = new BufferedInputStream(fis);

        byte[] bytes = new byte[1024];//存储每次读取的数据
        int len = 0;//记录每次读取的有效字节个数
        while ((len = bis.read(bytes))!=-1){
            System.out.println(new String(bytes,0,len));
        }
        bis.close();
    }
}

输出:

深入理解Java I/O流之BufferedInputStream类详解 在 Java 开发中,IO 操作是十分常见且重要的一个内容。在 IO 操作中,类是一个十分重要的类,它可以提供缓冲和流的级联两个功能,使得读取操作变得更加高效,提供了一定的性能优化。本文将对类进行详细介绍。本文将从类的定义入手,介绍其主要的功能、使用场景和优缺点,然后从源代码解析、应用场景案例和类代码方法介绍等方面深入探讨类的内部机制和使用方法,并提供测试用例对类进行实际测试。最后对全文内容进行总结,帮助读者更好地理解类。类继承自。 阅读详情

相关推荐

Dirsearch的下载、安装和使用(全)

Dirsearch工具的下载、安装和使用,超详细超全面

weixin_68416970的博客 1万+

BufferedInputStream的read方法原理

原文地址:http://www.software8.co/wzjs/java/1770.html BufferedInputStream是一个带有缓冲区的输入流,通常使用它可以提高我们的读取效率,现在我们看下BufferedInputStream的实现原理:  BufferedInputStream内部有一个缓冲区,默认大小为8M,每次调用read方法的时候,它首先尝试从缓冲区里读取数据,若读

yinbucheng的博客 1万+

MBIST --- PATR1.Memorybist测试原理

mem bist作为现在design设计中不可或缺的DFT设计内容,越发重要。本章节主要介绍mem bist组成部分,测试的原理以及注意事项。

sinat_27691203的博客 1万+

Java BufferedInputStream read()方法与示例

BufferedInputStream类read()方法 (BufferedInputStream Class read() method) Syntax: 句法: public int read(); public int read(byte[] b_arr, int offset, int length); read() method is available in...

cumtb2009的博客 3522

车载以太网SOMEIP入门必看:从服务发现到事件订阅,一次搞懂三种核心通信模式(附报文实例)

本文深入解析车载以太网SOME/IP的三种核心通信模式:服务发现、方法调用和事件订阅,通过真实报文实例和仿真工具演示,帮助开发者快速掌握这一关键技术。文章特别强调服务发现机制的基础作用,并详细介绍了Request/Response与Fire&Forget两种方法调用模式的应用场景,为智能汽车网络通信开发提供实用指南。

weixin_30955617的博客 111

正负数据如何归一化_生信干货 | LC-MS代谢组学QI软件下机数据代谢物筛选和归一化如何做?...

上海·2019第一届多层组学前言技术发展华东区客户研讨会倒计时1天LC-MS非靶向代谢组学数据下机啦~~拿到一堆数据怎么办?不会高端代码,也不会自己写脚本,我怎么处理数据?​本期小编带来了LC-MS非靶向代谢组学下机数据处理实用干货,包括:下机定性结果表格的解析、代谢物筛选如何做?以及定量数据如何做归一化?实用干货,赶紧来抢~~话不多说,赶紧来学习吧~~非靶向LC-MS代谢组学的分析流程LC-MS...

weixin_36441329的博客 2983

关于BufferedInputStream的read(byte b[], int off, int len)方法读取文件部分出现的问题

使用BufferedInputStream的read方法需要注意的一些问题

一个沉迷Java,无法自拔的Coder 1114

从string一词感受从字母象形到语义生成的底层逻辑

从词源上看,个人认为,soft一词的含义主要来自于“柔软水滑或柔软光滑”这样的含义,是从这样的含义中逐渐窄化,最终主要用来指“柔软”之意,而光滑、水滑这样的含义或语义形象最终被淡化,所以,soft如果符合首字母象形原则,那么它主要的来源形象,应当是【水】,也就是说,soft一词和smooth(a.光滑的)、ski(滑雪)/skate(滑冰)、slip(滑倒)/slippers(拖鞋)、slide(滑动)是相通的,并最终和sea(海)、sweat(汗/汗水)这一类和水一直相关的单词也相通。

nshkfhwr的博客 1269

BufferedInputStream的read()方法源码解析

BufferedInputSream默认是现实给出了一个8192byte大小的数组。 private static int DEFAULT_BUFFER_SIZE = 8192; public BufferedInputStream(InputStream in) { this(in, DEFAULT_BUFFER_SIZE); } public BufferedInputStre...

不说话装高手 3919

Sentence-BERT 语义相似度双塔模型

论文介绍 发表:2019,EMNLP 论文题目:《Sentence-BERT:sentence embeddings using siaese BERT-networks》 论文地址:https://arxiv.org/abs/1908.10084 Github:https://github.com/UKPLab/sentence-transformers 适用领域: 句向量生成 语义相似度计算 语义搜索 无监督任务(聚类) 1 概述 在20年之前的各种预训练模型中,比如bert,XLNet,Alb

weiyaner的博客 9193

Python爬虫实战:如何爬取京东商品评论数据

在本文中,我们介绍了如何使用 Python 爬虫技术爬取京东商品的评论数据。首先,我们分析了京东商品评论的 API 接口和 JSON 数据结构,然后编写了爬虫程序来抓取评论数据,并将数据保存到 CSV 文件中。接着,我们进行了一些基本的数据分析,包括评分分布和简单的情感分析。爬取京东商品评论的数据可以为电商分析、情感分析等提供有价值的信息。你可以在此基础上进行更深入的分析,挖掘更多的商业价值。希望本篇教程能够帮助你了解如何利用 Python 进行电商数据的爬取和分析!

2201_76125261的博客 1646

BufferedInputStream缓冲IO以及InputStream中的read(byte[] b)

InputStream InputStream是所有输入流的顶级类,当然只定义,不实现,具体的由子类去实现,如AudioInputStream, ByteArrayInputStream, FileInputStream等。 指明了InputStream的read(byte[],int off,int len)的实现方式,就是简单的调用read()方法而已,而read()方法是一次只读取一个字节,...

weixin_45830683的博客 1125

项目实战第四十七讲:易宝支付对接详解(保姆级教程)

本文是项目实战第四十七讲,易宝支付对接详解。1、xxl_job 接入fix;2、支付接口,将thirdOrderNo赋初始值,并将数据库中third_Order_No设置为非空;3、性能提效:将深拷贝改为字符赋值,提升程序性能;先不改动。

Jet_qi的博客 2678

java io read byte -1_java.io.BufferedInputStream.read(byte[] b, int off, int len)

全屏java.io.BufferedInputStream.read(byte[] b, int off, int len)方法读取字节的输入流len个字节到字节数组,开始在一个给定的偏移量。这种方法反复调用底层流的read()方法。该迭代读继续进行,直到下列条件之一为真:len字节读取返回-1,表示文件结束 - 。如果缓冲输入available()方法返回0声明以下是java.io.Buff...

weixin_29248313的博客 466

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Java学习之InputStream中read()与read(byte[] b)

Java学习之InputStream中read()与read(byte[] b)    这两个方法在抽象类InputStream中都是作为抽象方法存在的,<br />       JDK API中是这样描述两者的:<br /> <br />read() :  从输入流中读取数据的下一个字节,返回0到255范围内的int字节值。如果因为已经到达流末尾而没有可用的字节,则返回-1。在输入数据可用、检测到流末尾或者抛出异常前,此方法一直阻塞。<br />read(byte[] b) : 从输入流中读取一定数量的字

juyannihao1的专栏 2839

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

java.io.BufferedInputStream.read(byte[] b, int off, int len)

java.io.BufferedInputStream.read(byte[] b, int off, int len)方法读取字节的输入流len个字节到字节数组,开始在一个给定的偏移量。这种方法反复调用底层流的read()方法。更多教程请访问http://www.manongzj.com 该迭代读继续进行,直到下列条件之一为真: len字节读取 返回-1,表示文件结束 - 。 如果缓冲输入available()方法返回0 声明 以下是java.io.BufferedInputStream.re..

wuxiaopengnihao1的博客 856

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

java read bytes 阻塞_Java 输入流中的read(byte[] b)方法详解

我就废话不多说了,大家还是直接看代码吧~public int read(byte[] b)throws IOException从一个输入流中读取一定数量的字节,并将这些字节存储到其缓冲作用的数组b中。这个函数会返回一次性读取的字节数。这个函数是一个阻塞式的函数,当它读到有效数据、确认的文件尾(EOF)或者抛出一个异常时它才会执行其他语句,否则一直停在read()函数处等待。比如下面的列子:Serv...

weixin_36437537的博客 945

回顾BufferedInputStream-int read(byte[] buffer)BufferedOutputStream-void write(byte[] buff ,int offset

学习java基础,是一个反复学习的过程。 今天回顾BufferedInputStream的 int read(byte[] buffer) 和BufferedOutputStream的void write(byte[] buff ,int offset ,int len) int read(byte[] buffer) 参数: buff,字符流,将字符传入到字符数组当中。一般大

liuxiaohui_dh的专栏 1559

BufferedInputStream如何缓冲IO以及InputStream中的read(byte[] b) 是否具有缓冲功能?

今天做IO练习的时候,注意到了File

lazyguy21的专栏 3453

说说缓冲流BufferedInputStream和B…

很多真相都从一个疑问开始。 最近,看到FileInputStream里面的 read(byte b[])方法时突然想,既然FileInputStream也有一次读取指定数组长度的内容的功能,那么BufferedInputStream存在的意义在哪儿?而且我们经常说使用BufferedInputStream包裹普通节点流如FileInputStream可以起到缓冲的效果,但是具体怎么实现的我并不很清...

知了只有一夏 1810

Java基础18 read(byte[] b) read()区别 字节高效缓冲流

1.一次读取多个字节 public int read(byte[] b) 参数: 读取的字节存放到数组 数据类似于缓冲区 返回值:表示读取的有效的字节个数 2.代码 package day18; import java.io.FileInputStream; import java.io.IOException; public class Test04 { public static void main(String[] args) throws IOException { by

Xs943的博客 1713

JavaIO流读取文本文件教程

Java字节流字符流以及缓冲流读取文本文件内容介绍字节输入流(InputStream)InputStreamFileInputStream常用方法使用场景代码实例read()方法实现read(byte[] byte)方法实现BufferedInputStreamread()方法实现read(byte[] byte)方法实现字符输入流(Reader)InputReader常用方法使用场景代码实例read()方法实现read(char[] char)方法实现BufferedReaderread()方法实现rea

Marinda_Speed的博客 1104

详解Java 字节流的read()方法返回int型而非byte型的原因

我们都知道java中io操作分为字节流和字符流,对于字节流,顾名思义是按字节的方式读取数据,所以我们常用字节流来读取二进制流(如图片,音乐等文件)。问题是为什么字节流中定义的read()方法返回值为int类型呢?既然它一次读出一个字节数据为什么不返回byte类型呢? 网上的说法不能说它是错误的,只是我感觉没有解释清楚,接下来我们以FileInputStream /FileOutputStream和...

xxx 2263

Java按照按照字节码逐行读取文件 (java read line by BufferedInputStream from file)

这里直接给出源代码。关键: 1)使用BufferedInputStream 2)char == '\n' 的判定(换行) 3)每一行存到列表里面,然后输出。

the Blog of 等不到天亮丶等时光 987

java中read方法

InputStream in = null; in = new BufferedInputStream(new FileInputStream("src/nomal_io.txt")); byte [] buf = new byte[1024]; int bytesRead = in.read(buf); 该read方法调用如下代码: public int read(byte b[]) th...

weixin_43868730的博客 4281

BufferedInputStream源码逐行解析【java8】

BufferedInputStream源码阅读

qq_36223406的博客 479
上一篇: 缓冲流BufferedOutputStream使用步骤
下一篇: Java中字节缓冲流单个和数组方法文件复制效率的比较
崔凯洋
博客等级 码龄6年 26粉丝 132原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值